[英]Roboguice - Two implementations for one interface
My code is like this: 我的代码是这样的:
interface MyIntreface{
...
}
class A implements MyInterface{}
class B implements MyInterface{}
class BaseClass{
@Inject
MyInterface instance;
}
class MyFirstClass extends BaseClass{
....
}
class MySecondClass extends BaseClass{
....
}
Now I want to MyFirstClass have implementation A and MySecondClass implementation B. @Named annotations seems not to work in this case. 现在,我要MyFirstClass具有实现A和MySecondClass实现B。@Named注释在这种情况下似乎不起作用。 Is there any other robo-solution ?
还有其他机器人解决方案吗?
This use case is impossible to implements using Roboguice. 使用Roboguice不可能实现该用例。 But there are two ways to resolve your problem.
但是有两种方法可以解决您的问题。
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; } }
In my opinion the first one (with Provider) is much more cleaner. 我认为第一个(与提供程序一起使用)更清洁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.