análogos obtenidos sintaxis construcciones para métodos genéricos en Java y 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<*>) {}
¿Hay otras diferencias adicionales (sintácticamente o conceptual) para los métodos generalizados en Java y Kotlin? O innovaciones para los métodos genéricos en Kotlin? Gracias por cualquier respuesta.
En el código genérico, '?' representa un tipo desconocido. Se le conoce como el comodín. Hay varios usos de un comodín, incluida como el tipo de un campo, variable local o parámetro. Mientras que los tipos ofrece el sistema de tipo de Java comodín, Kotlin no lo hace. Sin embargo, tiene dos cosas diferentes; varianza declaración in situ y las proyecciones de tipo como una alternativa a los tipos de comodines.
tomado de Kotlin vs Java: La mayoría de las diferencias importantes que usted debe saber