Kotlin està dissenyat per ser totalment interoperable amb Java, la qual cosa significa que pots utilitzar codi Java des de Kotlin i viceversa. Aquesta característica és especialment útil per a projectes que volen migrar gradualment de Java a Kotlin o per a aquells que volen aprofitar les biblioteques existents de Java.

Conceptes Clau

  1. Cridar Codi Java des de Kotlin
  2. Cridar Codi Kotlin des de Java
  3. Nullabilitat i Tipus de Dades
  4. Anotacions Específiques de Kotlin
  5. Compatibilitat de Funcions i Propietats

  1. Cridar Codi Java des de Kotlin

Kotlin pot utilitzar qualsevol classe o mètode de Java sense cap problema. Aquí tens un exemple senzill:

Exemple de Codi Java

// JavaClass.java
public class JavaClass {
    public String greet(String name) {
        return "Hello, " + name;
    }
}

Exemple de Codi Kotlin

// Main.kt
fun main() {
    val javaClass = JavaClass()
    println(javaClass.greet("Kotlin"))
}

Explicació

  • JavaClass és una classe escrita en Java amb un mètode greet.
  • En el codi Kotlin, creem una instància de JavaClass i cridem el mètode greet com si fos una classe nativa de Kotlin.

  1. Cridar Codi Kotlin des de Java

Per cridar codi Kotlin des de Java, cal tenir en compte algunes diferències, especialment en la sintaxi.

Exemple de Codi Kotlin

// KotlinClass.kt
class KotlinClass {
    fun greet(name: String): String {
        return "Hello, $name"
    }
}

Exemple de Codi Java

// Main.java
public class Main {
    public static void main(String[] args) {
        KotlinClass kotlinClass = new KotlinClass();
        System.out.println(kotlinClass.greet("Java"));
    }
}

Explicació

  • KotlinClass és una classe escrita en Kotlin amb un mètode greet.
  • En el codi Java, creem una instància de KotlinClass i cridem el mètode greet com si fos una classe nativa de Java.

  1. Nullabilitat i Tipus de Dades

Kotlin té un sistema de tipus més estricte pel que fa a la nullabilitat. Quan es treballa amb codi Java, cal tenir en compte com es gestionen els valors nuls.

Exemple de Codi Java

// JavaClass.java
public class JavaClass {
    public String getNullableString() {
        return null;
    }
}

Exemple de Codi Kotlin

// Main.kt
fun main() {
    val javaClass = JavaClass()
    val nullableString: String? = javaClass.nullableString
    println(nullableString?.length)
}

Explicació

  • En Kotlin, les variables que poden ser nul·les es declaren amb un ? després del tipus (String?).
  • Quan es crida un mètode de Java que pot retornar un valor nul, Kotlin ho reconeix i obliga a gestionar la nullabilitat.

  1. Anotacions Específiques de Kotlin

Kotlin proporciona anotacions per ajudar a la interoperabilitat amb Java, com ara @JvmName, @JvmOverloads, i @JvmStatic.

Exemple de Codi Kotlin amb Anotacions

// KotlinClass.kt
class KotlinClass {
    @JvmOverloads
    fun greet(name: String = "World"): String {
        return "Hello, $name"
    }
}

Exemple de Codi Java

// Main.java
public class Main {
    public static void main(String[] args) {
        KotlinClass kotlinClass = new KotlinClass();
        System.out.println(kotlinClass.greet());
        System.out.println(kotlinClass.greet("Java"));
    }
}

Explicació

  • @JvmOverloads genera sobrecàrregues de mètodes per a cada paràmetre opcional, fent que sigui més fàcil cridar aquests mètodes des de Java.

  1. Compatibilitat de Funcions i Propietats

Kotlin permet definir propietats que es poden accedir com a camps en Java.

Exemple de Codi Kotlin

// KotlinClass.kt
class KotlinClass {
    var name: String = "Kotlin"
}

Exemple de Codi Java

// Main.java
public class Main {
    public static void main(String[] args) {
        KotlinClass kotlinClass = new KotlinClass();
        System.out.println(kotlinClass.getName());
        kotlinClass.setName("Java");
        System.out.println(kotlinClass.getName());
    }
}

Explicació

  • Les propietats de Kotlin es converteixen en mètodes get i set en Java.

Exercicis Pràctics

Exercici 1

Crea una classe en Java que tingui un mètode que retorni una llista de cadenes. Crida aquest mètode des de Kotlin i imprimeix cada element de la llista.

Solució

Codi Java

// JavaClass.java
import java.util.Arrays;
import java.util.List;

public class JavaClass {
    public List<String> getStringList() {
        return Arrays.asList("Kotlin", "Java", "Scala");
    }
}

Codi Kotlin

// Main.kt
fun main() {
    val javaClass = JavaClass()
    val stringList = javaClass.stringList
    for (str in stringList) {
        println(str)
    }
}

Exercici 2

Crea una classe en Kotlin amb una funció que tingui un paràmetre opcional. Crida aquesta funció des de Java amb i sense el paràmetre opcional.

Solució

Codi Kotlin

// KotlinClass.kt
class KotlinClass {
    @JvmOverloads
    fun greet(name: String = "World"): String {
        return "Hello, $name"
    }
}

Codi Java

// Main.java
public class Main {
    public static void main(String[] args) {
        KotlinClass kotlinClass = new KotlinClass();
        System.out.println(kotlinClass.greet());
        System.out.println(kotlinClass.greet("Java"));
    }
}

Conclusió

La interoperabilitat entre Kotlin i Java és una de les característiques més potents de Kotlin, permetent una transició suau i l'ús de biblioteques existents de Java. Amb una comprensió bàsica de com cridar codi entre els dos llenguatges, pots aprofitar el millor de tots dos mons en els teus projectes.

© Copyright 2024. Tots els drets reservats