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, FunExtension
FunExtension
, 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, JavaCodeConversion
JavaCodeConversion
, 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