Guice 対応のフレームワークを使用しています。
フレームワークによって作成されたクラス (または既存のバインディングをオーバーライドするサブクラス) を使用する場合、フレームワークが提供する変数を非常に簡単にインスタンス化できます。私が必要とするものは何でも、それはただの問題です
@Inject
FrameworkProvidedType variable;
ただし、カスタム作成されたクラスでは、それは機能しません。注入された変数はすべて null です。
インジェクションを使用するには、クラスにバインドが必要であることを理解しています。
既存のフレームワーク クラスをサブクラス化する場合、モジュール クラスでバインディングをオーバーライドできます。それはとても簡単です。
しかし、新しいクラスがあり、それを基礎となるフレームワークにバインドする方法がわかりません。
public Class myCustomClass {
private String iNeedthis;
private Context thisToo;
@Inject
FrameWorkThing magic;
public myCustomClass(String iNeedThis, Context thisToo){
this.iNeedThis = iNeedThis;
this.thisToo = thisToo;
}
public void DoMagic(){
//null pointer error because magic was not injected
magic.doMagic(this.iNeedthis);
}
}
この新しいクラスを Guice 対応にするにはどうすればよいですか?
ランタイムモジュールでこれを試しました
public Class<myCustomClass> bindMyCustomClass(){
return MyCustomClass.class;
}
そして見事に失敗。