Temps : 55 min.
Diffiulté : ***
L'objectif est de tester l'intéropérabilité entre Java et Kotlin :
Il s'agit de créer une classe de donnée Kotlin puis une classe Java, de façon à tester le Kotlin dans le Java.
agua, créez un nouveau package java.
agua.java, créez une nouvelle classe Kotlin, Palm :
data class Palm(val height: Int = 20, val stem: Int = 5)
Beach avec la fonction main() :
public static void main(String args[]) //static method
{
Palm palm = new Palm();
System.out.println("/!\\JAVA Palm: " + palm.toString());
}
Palm, créez une fonction simple :
fun dim() = height * stem * 3
main de la classe Java (sout pour générer System.out.println() :
System.out.println(palm.dim());
Palm, créez des fonctions d'impression :
fun printPalm(): Unit {
printStem()
printTrunk()
}
fun printStem() {
println(" | ")
println(") | (")
println(" ) | (")
println(" ) (")
}
fun printTrunk(height: Int = 7) {
repeat(height) {
println(" | | ")
}
println(" _-_")
}
main de la classe Java :
printPalm();
import static agua.java.PalmKt.printPalm;
Palm, rendez la fonction d'impression statique et ajoutez les annotations :
companion object {
@JvmStatic
fun printPalm(): Unit {
printStem()
printTrunk()
}
}
import static agua.java.Palm.printPalm;
Il s'agit de créer une fonction d'extension Kotlin puis de l'utiliser dans du code Java.
agua.java, créez un nouveau fichier Kotlin, FunExtensionFunExtension, déclarez une fonction d'extension pour la classe String :
fun String.sayHello() = print("This variable contains: $this")
main de la classe Java :
FunExtensionKt.sayHello(message);
FunExtension, ajoutez l'annotation de nom de fichier :
@file: JvmName("KotlinExt")
package agua.java
main de la classe Java :
KotlinExt.sayHello(message);
agua.java, créez un nouveau fichier Kotlin, JavaCodeConversionJavaCodeConversion, copiez, collez cet extrait de code :
class Application1 {
static void main(String[ ] args)
{ /* inverse d'une suite de caractère dans un tableau par
permutation des deux extrêmes */
char [ ] Tablecar ={'a','b','c','d','e','f'} ;
int i, j ;
System.out.println("tableau avant : " + String.valueOf(Tablecar));
for ( i = 0 , j = 5 ; i<j ; i++ , j-- )
{ char car ;
car = Tablecar[i];
Tablecar[i ]= Tablecar[j];
Tablecar[j] = car;
}
System.out.println("tableau après : " + String.valueOf(Tablecar));
}
}
Finalement, il est possible d'appeller du code Kotlin dans du code Java, notamment via les annotations :
@JvmStatic@file: JvmName("Beach")GeeksforGeeks : Java Interoperability – Calling Kotlin from Java
OpenClassRooms : Les extensions