Я начал работать над Java
репо (впервые вижу Java
), и у меня много проблем с самыми тривиальными вещами. Они используют Maven
, а каждый класс использует @injected
. Так, например, мне нужно запустить метод doSomething
класса B
внутри A
:
import javax.inject.Inject;
import javax.inject.Named;
import a_path.B;
@Named
public class A {
@Inject
protected B b;
public void method() {
b.doSomething();
}
}
import javax.inject.Inject;
import a_path.C;
class B {
@Inject
protected C c;
public void doSomething() {
c.anotherMethod();
}
}
Итак, хорошо, чтобы внести некоторые изменения в doSomething
, я создаю main
метод для проверки моих изменений внутри класса A
вот так:
import javax.inject.Inject;
import javax.inject.Named;
import a_path.B;
@Named
public class A {
@Inject
protected B b;
public static void main(String[] args) {
A a = new A();
a.b.doSomething();
}
public void method() {
b.doSomething();
}
}
И я получаю Exception in thread "main" java.lang.NullPointerException
, печатаю b
и это null
. Итак, что я предполагаю после многих головных болей, так это то, что @inject
творит какое-то волшебство c, о котором мне нужно знать, чтобы заставить его работать. По сути, каждый объект @inject
равен null
, когда я пытаюсь использовать их в main
. Мой вопрос в том, как правильно работать внутри объектов main
@injected
. Дайте мне знать, если вам понадобится больше контекста, и спасибо!