Interoperabilidad de Java: llamar a Java desde Kotlin

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *