Я тренируюсь с коллекциями в 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 связаны друг с другом?