Разница между Java и Kotlin generi c методами - PullRequest
0 голосов
/ 03 апреля 2020

Полученные аналоговые синтаксические конструкции для обобщенных c методов в Java и Kotlin:

public <T> void method() {}
fun <T> method() {}

public <T> T method(T... p) { return p[0]; }
fun <T> method(vararg p: T): T? { return p[0] }

public <T extends ClassA> T method(T[] p) { ... }
fun <T : ClassA> method(p: Array<T>): T { ... }

public <T extends ClassA & InterfaceA> T method(T[] p) {}
fun <T : ClassA> method(p: Array<T>): T where T : InterfaceA {}

public void method(Collection<? extends ClassA> collection) {}
fun method(collection: Collection<out ClassA>) {}

public void method(Collection<? super ClassA> collection) {}
fun method(collection: Collection<in ClassA>) {}

public void method(Collection<?> collection) {} 
fun method(collection: Collection<*>) {}

Существуют ли другие дополнительные различия (синтаксические или концептуальные) для обобщенных методов в Java и Kotlin? Или нововведения для обобщенных c методов в Kotlin? Спасибо за любой ответ.

1 Ответ

2 голосов
/ 03 апреля 2020

В общем коде c, '?' представляет неизвестный тип. Это известно как подстановочный знак. Существует несколько вариантов использования подстановочного знака, в том числе в качестве типа поля, локальной переменной или параметра. В то время как система типов Java предлагает подстановочные знаки, Kotlin нет. Тем не менее, у него есть две разные вещи; отклонения и проекции на сайте объявлений как альтернатива групповым типам.

взято из Kotlin против Java: наиболее важные различия, которые вы должны знать

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