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
- Cridar Codi Java des de Kotlin
- Cridar Codi Kotlin des de Java
- Nullabilitat i Tipus de Dades
- Anotacions Específiques de Kotlin
- Compatibilitat de Funcions i Propietats
- 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
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ètodegreet
com si fos una classe nativa de Kotlin.
- 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
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ètodegreet
com si fos una classe nativa de Java.
- 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
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.
- 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.
- Compatibilitat de Funcions i Propietats
Kotlin permet definir propietats que es poden accedir com a camps en Java.
Exemple de Codi 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
iset
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.
Curs de Programació en Kotlin
Mòdul 1: Introducció a Kotlin
- Introducció a Kotlin
- Configuració de l'Entorn de Desenvolupament
- Conceptes Bàsics de Kotlin: Variables i Tipus de Dades
- Flux de Control: Condicionals i Bucles
- Funcions i Lambdas
Mòdul 2: Programació Orientada a Objectes en Kotlin
- Classes i Objectes
- Herència i Interfícies
- Modificadors de Visibilitat
- Classes de Dades i Classes Segellades
- Declaracions d'Objectes i Objectes Companys
Mòdul 3: Funcions Avançades de Kotlin
- Col·leccions i Genèrics
- Funcions d'Extensió
- Funcions d'Ordre Superior i Programació Funcional
- Coroutines i Programació Asíncrona
- DSL (Llenguatge Específic de Domini) en Kotlin
Mòdul 4: Kotlin per al Desenvolupament d'Android
- Introducció al Desenvolupament d'Android amb Kotlin
- Construcció d'Interfícies d'Usuari
- Gestió de l'Entrada de l'Usuari
- Xarxes i Emmagatzematge de Dades
- Proves i Depuració