kotlin - 如果初始化了其中的lateinit var,如何检查伴随对象的外部
问题描述
创建实例时如何检查user
变量是否已初始化MyClass
?
class MyClass
{
companion object
{
lateinit var user:User
}
init
{
//initialize if not initialized
//user.isInitialized
user = User
}
}
我想要做的是仅在创建 MyClass 的第一个实例时初始化变量,并且该变量的相同值应该可以在所有实例中访问。如果无法像这样使用 isInitialzed,那么解决方法也是可以接受的.
解决方案
只需使用可为空的变量。
- 不安全的方法(不安全的方式与lateinit相同):
class MyClass {
companion object {
val user get() = user_ ?: throw UninitializedPropertyAccessException("property has not been initialized")
private var user_: User? = null
}
init {
if (user_ == null) user_ = User()
}
}
现在您可以访问该属性:
MyClass.user.example()
- 安全方法:
class MyClass {
companion object {
var user: User? = null; private set
}
init {
if (user == null) user = User()
}
}
现在您可以安全地访问该属性:
MyClass.user?.example()
推荐阅读
- spring-boot - 在我的应用程序为 SpringBoot 运行后,正在执行 H2 数据库的 data.sql 脚本
- python - 使用另一个数组在 Numpy ndarray 中选择某些索引
- react-native - 如何在本机反应中隐藏日期格式?
- javascript - D3 Sankey 节点宽度
- c# - 在临时 ASP.NET 文件夹中存储文件
- python - 为翻译聊天机器人安装 fastBPE 包时出错
- fortran - 使用 mpi subrouine 更改变量的值
- git - Git 别名文档
- html - 如何在 React 中绑定要在 html 中显示的值?
- java - 如何随机获取仅使用一个类的对象名称?