我们说我有一个我无法立即初始化的变量,因为我不知道它的价值(因此lazy val
对我不起作用)。我也无法控制对象创建的时刻,因为它是由框架处理的(例如Android应用程序中的Activity
),因此我无法延迟创建整个对象。我不想使用var
,因为它会带来不完整初始化和无效状态的风险。
到目前为止,我一直在使用以下方法:
class MyClass extends InterfaceWithDelayedInitialization {
private val delayedValueP = Promise[Type]()
private val delayedValueF = delayedValueP.future
def onCreate(value: Type): Unit = {
delayedValueP.successful(value)
}
def someOtherMethod(): Unit = {
delayedValueF foreach { value =>
// do something with value
}
}
}
但我不禁觉得这种方法有点臭(不像使用可变性和var
那样臭)。
对于像这样的问题,是否有一些标准解决方案?