Корреляция интерфейсов Kotlin с интерфейсами Java - PullRequest
0 голосов
/ 08 июня 2018

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

1 Ответ

0 голосов
/ 08 июня 2018

Интерфейсы в Kotlin имеют непосредственное отношение к интерфейсам Java.MutableList и другие интерфейсы коллекции являются исключением из этого;они обрабатываются компилятором особым образом для поддержки разделения между интерфейсами коллекций только для чтения и записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...