私は、FactoryModuleBuilder を使用して Guice で支援された注入を実装する方法を理解しようとしている Guice 初心者です。FactoryModuleBuilderの実装については、Guice Java ドキュメントを参照しました。
ドキュメントに記載されているとおりにすべてを行いました。工場に注入していません。このスタック オーバーフローの質問を参照しました。Guice AssistedInject は、同じ問題が発生したファクトリを注入しません。コンストラクター注入問題の前のフィールド注入について話します。私はそれに従い、呼び出し元クラスを使用して親クラスを呼び出そうとしていますが、まだヌルポインター例外が発生しています。ここで何がうまくいかないのですか?
呼び出し元クラス
public class MAIN {
@Inject private static MyFactory factory;
public static void main(String[] args){
ParentClass newbie = new ParentClass(factory);
}
}
私はまだ例外を取得しています:
Exception in thread "main" java.lang.NullPointerException
at com.pkg.ParentClass.<init>(ParentClass.java:19)
at com.pkg.MAIN.main(MAIN.java:10)
親クラス
public class ParentClass {
private final Foo test;
@Inject
public ParentClass(MyFactory factory){
test = factory.create(new HashMap<String,Object>());
}
}
モジュールの実装: ParentModule
public class ParentModule extends AbstractModule{
@Override
protected void configure() {
install(new FactoryModuleBuilder()
.implement(Foo.class, FooImpl.class)
.build(MyFactory.class));
}
}
工場インターフェース: MyFactory
public interface MyFactory {
Foo create(Map<String,Object> map);
}
クラス インターフェイス : Foo
public interface Foo{
}
クラス:FooImpl
public class FooImpl implements Foo {
private final Map<String,Object> mapA;
@AssistedInject
public FooImpl(@Assisted Map<String,Object> map){
mapA=map;
}
}