Kotlin春天类方面的启动
我正在尝试在java8的spring项目中使用kotlin。 我通过逐个替换类(java-> kotlin)来做到这一点。
我在Finder的一门课:
Finder.java具有这样的结构:
@Compoment class Finder { private SomeObject someObject; Finder() { someObject = new SomeObject(); } public void doSomething() { //aspect looks here someObject.do(); } }
我用Finder.kt取代了它
@Compoment open public class Finder { private val someObject : SomeObject constructor() { someObject = SomeObject() } public fun doSomething() { //aspect looks here someObject.do() //NPE here } }
当debuggind,我发现,该构造函数被调用,someObject创建Finder实例时创建。 但FinderEnhancerBySpring生成的类实例被自动装配到Detector实例。 它没有启动,所以当我尝试访问someObject的时候,我已经得到了NPE。
Finder类也有其他的自动填充字段(为了简化代码,我没有写在这里),它们也没有被启动。
UPD:我发现Finder方法的一个方面。 当我删除它,键入自动装配的实例成为Finder(而不是FinderEnhancerBySpring),并完全initiliazed。
这里有什么可能是错的? (0.13.1514 – kotlin版本)
所有的kotlin方法默认情况下都是final(说java),所以我必须用open关键字来覆盖它:
public open fun doSomething() { //aspect looks here someObject.do() }