我在Kotlin练习馆藏,无法理解界面的行为。以下是我的问题的背景:
public interface List<out E> : Collection<E> {...}
public interface MutableList<E> : List<E>, MutableCollection<E> {...}
List
和MutableList
是Kotlin中定义的接口,易于理解。现在,如果我想获取List的实例,可以使用这些方法:arrayListOf()
或mutableListOf()
。两种方法都使用相同的typealias
,它实际上是ArrayList
的Java实现的链接。
public typealias ArrayList<E> = java.util.ArrayList<E>
这是一个神秘的东西,MutableList
在Kotlin中没有实现,那么Kotlin如何知道java.util.ArrayList可以分配给MutableList
变量?换句话说,Kotlin和Java接口是如何相互关联的?
答案 0 :(得分:2)
Kotlin中的接口与Java接口具有一对一的关系。 MutableList
和其他集合接口是一个例外;它们由编译器以特殊方式处理,以支持只读和可写集合接口之间的分离。