Я пытаюсь использовать kotlin в своем весеннем проекте java8. Я делаю это, заменяя классы (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
}
}
Во время отладки я обнаружил, что этот конструктор вызывается, а некоторый объект создается при создании экземпляра Finder. Но сгенерированный FinderEnhancerBySpring экземпляр класса был автоматически привязан к экземпляру Detector. Он не был инициализирован, поэтому у меня есть NPE, когда я пытаюсь получить доступ к некоторому объекту.
Также в классе Finder есть другие автосвязанные поля (для упрощения кода я их здесь не писал), они также не были инициализированы.
UPD: Нашел аспект по методу Finder. Когда я удалил его, тип экземпляра с автоматическим подключением стал Finder (а не FinderEnhancerBySpring) и полностью инициализирован.
Что здесь может быть не так? (0.13.1514 - версия котлина)