J'essaie de comprendre la différence entre utiliser ou non @JvmStatic, et quand je dois utiliser un.
Ainsi, avec Kotlin et Java, je peux faire ceci:
TestKotlin.kt
class TestKotlin {
companion object {
val someString = "hello world"
}
}
Qui est alors appelé par Java, comme ceci:
TestJava.java
public class TestJava {
String kotlinStaticString = TestKotlin.Companion.getSomeString();
}
mais ensuite, il y a cette option 2:
TestKotlin.kt
v2
class TestKotlin {
companion object {
@JvmStatic // <-- notice the @JvmStatic annotation
val someString = "hello world"
}
}
Et puis, l'appeler à partir de Java, comme ceci:
TestJava.java
v2
public class TestJava {
String kotlinStaticString = TestKotlin.getSomeString();
}
Donc mes questions sont:
- Sont ces 2 cas différents, en termes de comportement ou d'allocation de mémoire?
- Est-il une préférence sur laquelle utiliser?
- Faire à la fois de créer un pseudo-statique objet singleton, comme Java statique n'?
Merci!