一個簡單的例子:如何在使用反射創建的對象上注入事物?
class C{}
class B{
@Inject C c;
void doSomething(){
System.out.println(c);
}
}
class A{
@Inject A(B b){
b.doSomething();//this works fine and prints the c object
}
}
現在,如果我創建B對象使用反射:
class A{
A(){
// blah blah blah
B b = constructor.newInstance();
b.doSomething(); // sigh, this prints null!!!
}
}
所以,我的問題是:我怎樣才能使注射工作,如果我已經建立在B使用反射的對象(而不是通過Guice注入)?
爲什麼你需要通過反射創建`B`而不是注入? – ColinD 2011-01-30 18:28:44
嗯,我想我簡化了很多例子。 B由工廠創建......工廠知道如何創建無法輕鬆注入的複雜對象:他們都有不同類型的構造函數,爲了使Guice正常工作,我需要使用輔助注入,而不是由Android的Guice版本支持。 – Cristian 2011-01-31 00:43:18