java Kotlin对象类实例get()
public class Singleton {
private static Singleton instance = null;
private Singleton(){
}
public synchronized static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
doSomeInitializationIfRequired();
return instance;
}
}
在这里,每当我们请求实例时,就会调用getInstance()方法,如果我们想在每次从任何地方调用实例时执行某些操作,就可以在该实例中添加代码
有没有办法像这样用Kotlin对象覆盖实例变量get()
例如
object SomeSingleton {
get() = {
doSomeInitializationIfRequired()
}
}
我知道我会写作
init {
}
但这只会被调用一次
# 1 楼答案
你可以使用一些抽象,创建一个
interface
(不管你想给它起什么名字)。定义singleton应该具备的所有可能的方法和属性:然后创建一个单独的私有实现:
最后,使用自定义getter定义一个顶级字段,该字段返回实现:
现在可以通过
SomeSingleton
字段获取ISomeSingleton
的实例。你的初始化代码总是在运行