我想创建一个单例类,但不幸的是,Android 几乎任何东西都需要 Context,所以我需要它来创建一个实例。所以我只是假设用户调用init()
,然后返回实例。如下所示,如果_instance
为null,会抛出异常,所以get
方法不能返回 null。
但 Kotlin 说我必须初始化instance
。问题是,没有上下文就无法创建 MyClass。所以我不想指定初始值。我怎样才能做到这一点?
companion object
{
protected var _instance:MyClass? = null;
fun init(context:Context)
{
_instance = MyClass(context)
}
var instance:MyClass //<---This causes a compile error.
get()
{
if(_instance==null) throw RuntimeException("Call init() first.");
return _instance!!;
}
}
改变var
to val
它应该起作用:
....
val instance: MyClass
....
变量属性 (var
) 不仅假定有一个 getter,而且还假定有一个 setter。由于您没有提供设置器,因此生成了默认设置器set(value) { field = value }
。尽管在这种情况下没有用,但默认设置器使用field
,因此需要对其进行初始化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)