Я пытаюсь понять разницу между использованием/не использованием @JvmStatic, и когда я должен использовать один из них.
Итак, с Kotlin и Java, я могу это сделать:
TestKotlin.kt
class TestKotlin {
companion object {
val someString = "hello world"
}
}
Затем он вызывается Java, например:
TestJava.java
public class TestJava {
String kotlinStaticString = TestKotlin.Companion.getSomeString();
}
но тогда этот вариант 2:
TestKotlin.kt
v2
class TestKotlin {
companion object {
@JvmStatic // <-- notice the @JvmStatic annotation
val someString = "hello world"
}
}
И затем, назовите это из Java, например:
TestJava.java
v2
public class TestJava {
String kotlinStaticString = TestKotlin.getSomeString();
}
Поэтому мои вопросы:
- Являются ли эти два случая разными, с точки зрения поведения или распределения памяти?
- Есть ли предпочтения, на которых можно использовать?
- Создают ли псевдо-статический одноэлементный объект, как это делает Java static?
Благодарю!