Google Guiceで最近ハッキングしましたが、宣言されているクラスに従ってString
をコンストラクタに挿入するアイデアが出てきました。注釈に定義された他のいくつかのパラメータ。たとえば、次の 私は@NamedInjectable
はGuiceのが使用する新しい修飾子アノテーションを定義する場合:Guiceを使用してインデックス付き(およびクラス固有の)文字列を挿入する方法
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.PARAMETER })
@Qualifier
public @interface NamedInjectable
{
String name() default "";
boolean indexed() default true;
}
名(デフォルトは唯一のクラスの名前です)は、文字列の新しい名前ベースのある
、およびindexed
状態かどうか新しい文字列が挿入されるたびに名前をインクリメントする必要はありません。
public MyClass {
@Inject
public MyClass(@NamedInjectable(name = "foo", indexed = true) String name) {
// some code
}
}
そしてname
paramが、そのような「 私はプロバイダーバインディングまたはAssistedInjectを使用して考えられますが、私はそれを成し遂げることができた。失敗する一つの主な理由、何とかの名前を取得しているように値を指定する必要がありますクラス。
あなたが他のアイデアを持っていますか?
私は、私の目的にはるかに適している工場の注射を見つける。それは過度の=のように思えるが) –