kotlin - 如何在 Kotlin 中制作数据类单例?
问题描述
假设我有一个数据类:
data class SensorData(val name: String, val temp : Double)
SensorData
我从 REST 服务或通过内部 setter 方法创建此对象,而name
始终填充并且temp
可能为空。
此外,我需要通过几个类来使用这个 SensorData 对象,这就是我想到的使用singleton
.
显然我需要这里描述的object
关键字,但我该如何组合?data class object
解决方案
您可以使用伴随对象来保留对数据对象的引用:
data class SensorData(val name: String, var temp : Double) {
companion object {
@Volatile
@JvmStatic
private var INSTANCE: SensorData? = null
@JvmStatic
@JvmOverloads
fun getInstance(name: String = "default", temp : Double = 0.0): SensorData = INSTANCE ?: synchronized(this) {
INSTANCE ?: SensorData(name, temp).also { INSTANCE = it }
}
}
}
并像这样使用它:
val name1 = SensorData.getInstance("name", 5.0).name
// Or with default values:
val name2 = SensorData.getInstance().name
推荐阅读
- php - 检索按类别分组的 SQL 结果
- python - 如何根据 groupby 中每个组的值最后更改的日期自动填充数据框中的数据
- python - Python在显示图像时检测x服务器错误
- bash - 如何在 bash 和/或使用 awk 的单列中进行数学运算?
- sql - SQL Server 代理作业插入的行数少于手动包执行
- ios - 如何让 CAEmitterLayer 一次只生成一个单元格 swift 4
- azure-cognitive-search - Azure 搜索查询是否支持 count(collection) > 1
- r - 如何为函数中的输出全局数据框分配名称?
- c++ - 在使用 -fsanitize=undefined (mingw-w64) 时找不到 -lubsan
- nlp - 是否可以为 coreNLP 提供一组命名实体的输入以及一组句子以进行共指解析