companion object { private val sDataModel = DataModel() @JvmStatic fun getDataModel() = sDataModel }这种单例 和object DataModel{
时间: 2024-09-06 10:01:15 浏览: 46
kotlin中object关键字的三种使用场景
这是Kotlin语言中创建单例模式的两种常见方式:
1. **Companion Object**:
使用`companion`关键字创建了一个静态内部类(实际上是一个Object)。在给定的例子中,`sDataModel`是私有的字段,表示数据模型的实例。`@JvmStatic`注解允许这个静态方法在不需要创建该类的对象的情况下被外部访问。通过`getDataModel()`函数获取单例`DataModel`。
```kotlin
fun getDataModel(): DataModel { return sDataModel } // 等同于 DataModel().sDataModel
```
当你需要一个全局可用的数据存储或其他无状态的辅助功能时,这种方式简洁高效。
2. **Object Literal or Singleton Class**:
另一种方式是在顶级定义一个名为`DataModel`的普通类,并将其初始化为单例。这意味着直接实例化它会返回同一个对象。例如:
```kotlin
object DataModel {
init {
// 初始化逻辑
}
val data: YourDataType // 或者其他属性
}
```
这里,`init`块用于执行一次性的初始化操作。访问`DataModel`就像访问一个常量一样。
阅读全文