请问这一段kotlin代码为什么会出错?


#1

我有以下一段代码:

@Component
class CeshiClass: InitializingBean, DisposableBean {

@Autowired
private lateinit var ceshiBean: CeshiObject

override fun afterPropertiesSet(){
    log.info("ceshiBean 1: $ceshiBdean")
}

fun ceshiFunction(ceshiName: String): Boolean {
   log.info("ceshiBean 2: $ceshiBdean")
}

@Throws(Exception::class)
override fun destroy() {
    
}

}

第一个 ceshiBean 1 成功了,但是 第二个 ceshiBean 2 显示错误: lateinit property ceshiBean has not been initialized. 就是说 ceshiBean 在 afterPropertiesSet() 已经初始化成功,但是其它函数不用用它?

有人建议我把ceshiBean 放到 constructor里,比如: CeshiClass(testBean),这样所有函数就可以用它了。但是因为有其他很多地方要用这个类,所以把ceshiBean放到constructor不是很方便 (因为其他的类都有初始化ceshiBean然后传给CceshiClass的constructor)。

不知道有没有其它办法可以初始化这个ceshiBean? 谢谢!


京ICP备16022265号-2 Kotlin China 2017 - 2018