Ya que Kotlin fue desarrollado teniendo en cuenta la interoperabilidad con Java . Facilita el uso del código Java desde dentro de sí mismo. Una clase o función de Kotlin puede hacer referencia a las clases de Java y sus métodos de una manera sencilla.
Getters y Setters en Java –
Los getters y setters de todos los tipos definidos dentro de la clase Java se representan como propiedades en Kotlin . Por lo tanto, para acceder a los getters y setters de un miembro de datos de una clase Java, debe hacer referencia a una propiedad dentro de Kotlin.
Archivo Java declarado como myjava.java
Java
// Java class public class myjava { private int value; public int getValue(){ return value; } public void setValue(int value){ this.value = value; } }
Archivo Kotlin declarado como mykotlin.kt
Java
// Kotlin file fun main(){ val obj = myjava() obj.value = 5 // This will call the setter function println(obj.value) // This will call the getter function }
Producción:
5
Métodos –
Llamar a los métodos de Java desde Kotlin es un concepto sencillo. Los tipos de argumento proporcionados son los mismos tanto en Java como en Kotlin y lo mismo ocurre con el tipo de retorno de la función. La única excepción a esta regla es el tipo de retorno nulo. Aquellas funciones en Java que tienen un tipo de devolución nulo, devuelven un tipo Unidad en Kotlin. Entonces, este valor se puede almacenar en Kotlin ya que Unit existe como un tipo.
Archivo Java declarado como myjava.java
Java
// Java code public class myjava { public int add(int a, int b){ return a+b; } }
Archivo Kotlin declarado como mykotlin.kt
Java
// Kotlin file fun main(args: Array<String>) { val obj = myjava() val ans = obj.add(4, 5) println("The sum of two numbers is "+ans) }
Producción:
The sum of two numbers is 9
Nota: algunas de las palabras clave de Kotlin pueden usarse como identificadores válidos en Java. Por ejemplo: cualquier objeto, sellado, etc. Si este es el caso, utilice identificadores en Kotlin, enciérrelos dentro de un carácter de acento grave (`).
Por ejemplo, si una clase Java XYZ tiene un método llamado any, entonces el método se puede llamar en Kotlin como:
obj.`any`() // obj is the instance of the class XYZ
Miembros estáticos –
Los miembros estáticos de una clase en Java se convierten en miembros de un objeto complementario en Kotlin . Sin embargo, estos objetos complementarios no se pueden usar directamente en expresiones. Para acceder, sus miembros utilizan el nombre completo del miembro tal como se define en Java.
Archivo Java declarado como myjava.java
Java
// Java Code package mypackage; public class myjava { public static void display() { System.out.println("Call successful") } }
Archivo Kotlin declarado como mykotlin.kt
Java
// declare kotlin package package myktpackage // import java class using java package import mypackage.myjava fun main(args: Array<String>) { // calling static member of java class val str = myjava.display() println(str) }
Producción:
Call successful
Arrays de Java –
Kotlin admite una forma invariable de arreglos, es decir, los arreglos de un tipo particular no se pueden asignar a un arreglo de tipo Cualquiera en Kotlin, que es diferente en comparación con los arreglos de Java que se pueden asignar a un arreglo de tipo Objeto.
Además, Kotlin no admite la asignación de arrays de tipos de subclase a una array de tipo de superclase.
Ahora, dado que Kotlin no proporciona arrays para tipos primitivos, proporciona varias clases especializadas para representar una array de tipos primitivos en Java. Estas clases no tienen relación con la clase Array y se compilan en las arrays java primitivas para obtener el máximo rendimiento. Esta conversión a código de bytes no presenta sobrecarga adicional, sin importar la forma en que se utilicen las arrays.
Archivo Java declarado como myjava.java
Java
// Java Code public class myjava { int result = 0; public int compute(int[] array) { for(int a: array){ result = result + a; } return result; } }
Archivo Kotlin declarado como mykotlin.kt
Java
// Kotlin code fun main(args: Array<String>) { // Kotlin code val obj = myjava() val array = intArrayOf(1, 2, 3, 4, 5, 6) var sum = obj.compute(array) println("The sum of an array is "+sum) }
Producción:
The sum of an array is 21
Java varargs –
Java admite el concepto de argumentos de longitud variable en las funciones, es decir, cuando el número de argumentos de una función no se conoce de antemano, pero se conoce su tipo, declaramos un parámetro varargs. Kotlin no proporciona parámetros varargs, sin embargo, para ser completamente operativo con Java, admite un operador de propagación especial (*) para llamar a las funciones que tienen parámetros varargs.
Archivo Java declarado como myjava.java
Java
// Java code public class myjava { public void myfunc(String str,int... numbers) { System.out.println("Passed string is " + str); for (int n : numbers) { System.out.print(" "+n); } } }
Archivo Kotlin declarado como mykotlin.kt
Java
// Kotlin code fun main(args: Array<String>) { val obj = myjava() val array = intArrayOf(10, 20, 30) obj.myfunc("Geeks", *array) }
Producción:
Passed string is Geeks 10 20 30
Tipos mapeados de Java y Kotlin:
Los tipos en Kotlin son diferentes de los tipos en Java. Sin embargo, para mantener la interoperabilidad, Kotlin proporciona una asignación de tipos de Java a tipos de Kotlin. Esta asignación tiene lugar en tiempo de compilación y no se observa ningún cambio significativo en el rendimiento en tiempo de ejecución.
Los tipos primitivos de Java se asignan a los siguientes tipos primitivos:
Tipo Java | Tipo Kotlin |
---|---|
byte | kotlin.Byte |
corto | kotlin.corto |
En t | kotlin.int |
largo | kotlin.Largo |
carbonizarse | kotlin.char |
flotar | kotlin.Flotador |
doble | kotlin.Doble |
booleano | kotlin.booleano |
Algunas de las clases integradas definidas en el paquete java.lang también se asignan a las clases de Kotlin.
Tipo Java | Tipo Kotlin |
---|---|
java.lang.Objeto | kotlin.Cualquiera! |
java.lang.Cloneable | kotlin. ¡Clonable! |
java.lang.Comparable | kotlin. ¡Comparable! |
java.lang.Enum | kotlin.Enum! |
java.lang.anotación | kotlin.Anotación! |
java.lang.CharSequence | kotlin.CharSequence |
java.lang.String | kotlin.String! |
java.lang.Number | kotlin.Número! |
java.lang.Throwable | kotlin. ¡Lanzable! |
Los tipos en caja de los tipos de datos primitivos de Java se asignan a tipos anulables en Kotlin.
Tipo Java | Tipo Kotlin |
---|---|
java.lang.Byte | kotlin.Byte? |
java.lang.Corto | kotlin.Corto? |
java.lang.Integer | kotlin.Int? |
java.lang.Long | kotlin. ¿Largo? |
java.lang.Carácter | kotlin.Char? |
java.lang.Float | kotlin. ¿Flotar? |
java.lang.Double | kotlin. ¿Doble? |
java.lang.booleano | kotlin.Boolean? |
Publicación traducida automáticamente
Artículo escrito por CharchitKapoor y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA