Bos*_*one 2 abstract-class dependency-injection guice
我有一个简单的层次结构如下:
public abstract class AbsFoo {
protected AbsBoo boo;
}
public class Foo extends AbsFoo {
public Foo() {
boo = new Boo(); // Boo extends AbsBoo
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:AbsFoo的实例应该是动态创建的,可能不是字段
我可以boo = new Boo()用注射剂替换吗?
是:
public abstract class AbsFoo {
protected AbsBoo boo;
}
public class Foo extends AbsFoo {
@Inject
public Foo(Boo boo) {
super.boo = boo; // Boo extends AbsBoo
}
}
Run Code Online (Sandbox Code Playgroud)
确保使用@Inject或injector.getInstance()构造Foo实例
编辑
您还可以使用提供程序按需创建实例:
@Inject
Provider<Foo> fooProvider
//...
public void doSomething(){
//need new foo:
Foo foo = fooProvider.get();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5454 次 |
| 最近记录: |