首页 > 解决方案 > Kotlin 接口与 Java 接口的相关性

问题描述

我正在使用 Kotlin 中的集合进行练习,但无法理解接口的行为。这是我的问题的背景:

public interface List<out E> : Collection<E> {...}
public interface MutableList<E> : List<E>, MutableCollection<E> {...}

List并且MutableList是在 Kotlin 中定义的接口,很容易理解。现在,如果我想获取 List 的实例,可以使用这些方法:arrayListOf()mutableListOf(). 两种方法使用相同typealias,实际上是链接到Java实现的ArrayList

public typealias ArrayList<E> = java.util.ArrayList<E>

这里有个神秘的东西,MutableList在 Kotlin 中没有实现,那么 Kotlin 怎么知道 java.util.ArrayList 可以赋值给MutableList变量呢?换句话说,Kotlin 和 Java 接口是如何相互关联的?

标签: interfacekotlin

解决方案


Kotlin 中的接口与 Java 接口是一对一的关系。MutableList和其他集合接口是一个例外;它们由编译器以特殊方式处理,以支持只读和可写集合接口之间的分离。


推荐阅读