如何在Kotlin中实现面向接口编程?(附Java示例参考)
在Kotlin中实现面向接口编程(对应Java的List/ArrayList写法)
嘿,这个问题我太熟悉了!在Kotlin里实现和你给出的Java代码类似的面向接口编程,思路和Java完全一致,只是语法上更简洁顺手。
先直接给你对应Java那行代码的Kotlin写法:
val a: List<String> = ArrayList()
这就完全对应Java的List<String> a = new ArrayList<>();——变量a的类型是抽象的List接口,而实际实例是具体的ArrayList实现,完美契合面向接口编程的原则。
Kotlin还提供了更便捷的标准库函数,让你不用手动写ArrayList(),比如:
val a: List<String> = arrayListOf()
arrayListOf()会自动创建并返回一个ArrayList实例,Kotlin的类型推断能帮我们处理泛型,当然你也可以显式指定泛型参数arrayListOf<String>(),效果是一样的。
这里要额外提个Kotlin集合的小知识点:Kotlin里的List是只读接口,如果你需要像Java的ArrayList那样支持添加、删除元素的可变集合,得用MutableList接口:
// 可变版本的写法 val mutableList: MutableList<String> = ArrayList() // 或者用对应的便捷函数 val mutableList = mutableListOf<String>()
这种只读和可变分离的设计是Kotlin的特色,能避免很多意外修改集合的bug,如果你只是需要遍历、读取集合内容,优先用List就好。
另外要注意,如果省略了变量的类型声明,比如val a = arrayListOf<String>(),Kotlin会把a的类型推断为ArrayList<String>,这就失去了面向接口编程的意义——所以一定要显式声明接口类型(List<String>或MutableList<String>),才能依赖抽象而非具体实现。
内容的提问来源于stack exchange,提问作者batinex
相关产品推荐
相关产品推荐

