当前位置: 首页 > 知识库问答 >
问题:

Kotlin静态方法和变量

伍心水
2023-03-14

我希望能够将类实例保存到公共静态变量中,但我不知道如何在Kotlin中做到这一点。

class Foo {

    public static Foo instance;
    public Foo() {
        instance = this;
    }

}

共有1个答案

常英纵
2023-03-14

与Java静态字段最接近的是一个同伴对象。您可以在这里找到它们的文档参考:https://kotlinlang.org/docs/reference/object-declarations.html#companion-objects

Kotlin中的代码看起来如下所示:

class Foo {

    companion object {
        lateinit var instance: Foo
    }

    init {
        instance = this
    }

}

如果您希望您的字段/方法以静态形式向Java调用方公开,那么您可以应用@jvmstatic注释:

class Foo {

    companion object {
        @JvmStatic lateinit var instance: Foo
    }

    init {
        instance = this
    }

}
 类似资料:
  • 本文向大家介绍Kotlin实现静态方法,包括了Kotlin实现静态方法的使用技巧和注意事项,需要的朋友参考一下 工具类 全都是静态方法的情况 : class 类名 改为 object 类名 即可 普通静态方法 一部分是静态方法的情况 : 将方法用 companion object { } 包裹即可 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我们可以把一个方法赋值给类的函数本身,而不是赋给它的 "prototype"。这样的方法被称为 静态的(static)。 在一个类中,它们以 static 关键字开头,如下所示: class User { static staticMethod() { alert(this === User); } } User.staticMethod(); // true 这实际上跟直接将其

  • 问题内容: 例如: 这些变量将在Java,堆或堆栈存储器中存储在哪里?它们如何存储? 问题答案: 静态方法(实际上是所有方法)以及静态变量都存储在PermGen堆的部分中,因为它们是反射数据(与类相关的数据,而不与实例相关的数据)的一部分。 更新说明: 请注意,只有变量及其技术值(原始或引用)存储在空间中。 如果你的静态变量是对对象的引用,则对象本身存储在堆的常规部分(青年/旧世代或幸存者空间)中

  • 问题内容: 我在这里有关于此代码的问题 我知道多态性不适用于静态方法,仅适用于实例方法。而且,对于静态方法而言,覆盖无效。 因此,我认为该程序应打印出来:c,d 因为c调用了m1方法,但是它是静态的,所以它无法覆盖,并且在Mini类而不是Car中调用该方法。 这样对吗? 但是,我的教科书说答案应该是:a,d 是错字吗?因为我现在有点困惑。 请清除此,谢谢。 问题答案: 因为c调用了m1方法,但是它

  • PowerMockito.when(ConnectionFactory.getConn(“ABC”).getCurrentStatus()).thenReturn(ConnectionStatus.Connected); 对于上面的陈述,我得到了一个NPE。 我在junit测试类的开头已经有@PrepareForTest({fxallConnectionFactory.class,Connecti

  • 问题内容: 我有必须从静态方法中使用的服务。我知道这是错误的,但是我无法更改当前的设计,因为这需要大量的工作,因此我需要一些简单的技巧。我不能更改为非静态的,而需要使用此自动装配的bean。有什么线索怎么做? 问题答案: 您可以通过执行以下解决方案之一来做到这一点: 使用构造函数@Autowired 这种方法将构造需要一些bean作为构造函数参数的bean。在构造函数代码中,您可以将静态字段的值设