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() }