我的代码是这样的:
interface MyIntreface{
...
}
class A implements MyInterface{}
class B implements MyInterface{}
class BaseClass{
@Inject
MyInterface instance;
}
class MyFirstClass extends BaseClass{
....
}
class MySecondClass extends BaseClass{
....
}
现在我想MyFirstClass有实现A和MySecondClass实现B. @Named注释似乎在这种情况下不起作用。还有其他机器人解决方案吗?
答案 0 :(得分:0)
使用Roboguice无法实现此用例。但有两种方法可以解决您的问题。
class Baclass BaseClass{
protected abstract MyInterface extractMyInterface();
}
class MyFirstClass extends BaseClass{
@Inject
B instance;
protected MyInterface extractMyInterface() {
return instance;
}
}
class MySecondClass extends BaseClass{
@Inject
A instance;
protected MyInterface extractMyInterface() {
return instance;
}
}
在我看来,第一个(提供者)更清洁。