使用: Guice 3
TypeLiteral
ジェネリック メソッド parameterType からを作成する方法を知りたいです(インジェクターで注入するため)。
例を次に示します。
環境 :
bind(new TypeLiteral<Set<String>>(){}).toInstance(x);
bind(new TypeLiteral<Set<Integer>>(){}).annotatedWith(INJECTOR.class).toInstance(y);
public class Foo
{
public void bar(Injector injector, Set<String> param, @INJECTOR Set<Integer> value)
{
//...
}
}
public class Example
{
@Inject
Injector injector;
public void methodInjector()
{
Method[] fooMethods = Foo.class.getMethods();
for(Method m : fooMethods)
{
for(Class<?> c : m.getParameter.getParameterTypes())
{
Object o = injector.getInstance(c);
/*
this work for simple Type like "Injector" but
don't work for generic type (Set<String>, List<Set<String>>, ...).
*/
}
}
}
}
私の場合、明らかに注入java.util.Set
は機能しません...おそらくTypeLiteralにはそれを行うためのトリックがあります...
私の説明が明確であることを願っています、ありがとう。