相关疑难解决方法(0)

为什么以及何时将@JvmStatic与伴侣对象一起使用?

我试图理解使用/不使用@JvmStatic与何时使用其中任何一个之间的区别.

所以,使用Kotlin和Java,我可以这样做:

TestKotlin.kt

class TestKotlin {
    companion object {
        val someString = "hello world"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后由Java调用,如下所示:

TestJava.java

public class TestJava {
    String kotlinStaticString = TestKotlin.Companion.getSomeString();
}
Run Code Online (Sandbox Code Playgroud)

但是,有这个选项2:

TestKotlin.kt V2

class TestKotlin {
    companion object {
        @JvmStatic  // <-- notice the @JvmStatic annotation
        val someString = "hello world"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,从Java调用它,如下所示:

TestJava.java V2

public class TestJava {
    String kotlinStaticString = TestKotlin.getSomeString();
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  • 在行为或内存分配方面,这两种情况有何不同?
  • 是否有偏好使用哪一个?
  • 两者都创建一个伪静态单例对象,就像Java静态一样吗?

谢谢!

java android kotlin kotlin-companion

36
推荐指数
3
解决办法
1万
查看次数

标签 统计

android ×1

java ×1

kotlin ×1

kotlin-companion ×1