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

Kotlin:类中对象和伴生对象的区别

吴单鹗
2023-03-14

在Kotlin的类中,一个对象和一个同伴对象有什么区别?

class MyClass {

    object Holder {
        //something
    }

    companion object {
        //something
    }
}

它的“静态”(我是java方面的)生命周期可能有区别吗?

共有1个答案

萧业
2023-03-14

对象可以实现接口。在类内部,定义一个不实现任何接口的简单对象在大多数情况下没有任何好处。但是,定义实现各种接口的多个对象(例如comparator)可能非常有用。

就生命周期而言,在类中声明的同伴对象和命名对象之间没有区别。

 类似资料:
  • 为什么不是: 如有任何帮助,我们将不胜感激。

  • 主要内容:类定义,类的属性,主构造器,次构造函数,抽象类,嵌套类,内部类,匿名内部类,类的修饰符类定义 Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。 Kotlin 中使用关键字 class 声明类,后面紧跟类名: 我们也可以定义一个空类: 可以在类中定义成员函数: 类的属性 属性定义 类的属性可以用关键字 var 声明为可变的,否则使用只读关键字 val 声明为不可变。 我们可以像使用普通函数那样使用构造函数创建类实例: 要使用一个属性,只要用名称引用它即

  • 类定义 Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。 Kotlin 中使用关键字 class 声明类,后面紧跟类名: class Runoob { // 类名为 Runoob // 大括号内是类体构成 } 我们也可以定义一个空类: class Empty 可以在类中定义成员函数: class Runoob() { fun foo()

  • 问题内容: 我是Kotlin的新手,最近将一个简单文件从Java转换为Kotlin。我想知道为什么Android转换器将我的java类更改为Kotlin对象。 Java: 转换的Kotlin: 为什么不呢? 任何帮助将不胜感激谢谢。 问题答案: Kotlin对象就像一个无法实例化的类,因此必须按名称进行调用。(本身是静态类) android转换器看到您的类仅包含静态方法,因此将其转换为Kotlin

  • 我有一个类包含如下所示同伴对象。 我想在运行时修改同伴对象的属性。我将在这个类中添加数百个属性。所以我要做动态。我使用了这个方法,得到如下错误。

  • 问题是我应该把和放在哪里,因为我不能使用带有扩展函数的同伴对象?