2015-09-26 69 views
1

我想在我的java8春天項目中使用kotlin。 我正在通過逐個替換類(java-> kotlin)來完成它。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的方法之一。當我刪除它時,輸入autowired實例成爲Finder(而不是FinderEnhancerBySpring)並完全啓動。

這裏有什麼問題? (0.13.1514 - 科特林版)

回答

1

所有科特林方法最終在默認情況下(說JAVA),所以我允許超越控制它開放關鍵字:

public open fun doSomething() { //aspect looks here 
    someObject.do() 
} 
+1

了這一個解決方案問題?如果是這樣,你可以接受你自己的答案,使這個問題看起來更「完成」 –