【发布时间】:2014-01-29 08:05:53
【问题描述】:
我知道我的标题令人困惑。我很难总结我想问的问题。我的意思是有一种方法可以使用 guice 使用绑定方法注入实现接口 A 的类,其中注释位于实现接口 A 的类中,而不是在配置方法中绑定它或在接口 A 中添加 @ImplementedBy 注释.
更新
当我阅读使用 guice 的教程时,为了指示某个类实现一个接口,必须使用绑定。现在有很多方法可以执行绑定。其中的例子是: 链接绑定:
bind(AInterface).to(Bclass);
此代码将位于扩展抽象模块的类的配置方法中。这告诉 guice,如果它们是需要 AInterface 的依赖项,它可能会注入 BClass 来处理依赖项。
即时绑定:
@ImplementedBy(BClass.class)
public interface AInterface {
}
此示例等效于链接绑定示例。
现在我阅读的所有绑定都要求我在配置方法或接口中声明一个类实现了该接口。这将要求我在每次实现接口时编辑现有代码。我想要的是简单地让实现接口的类处理绑定本身,以免修改现有代码。
类似
@Exports(AInterface.class)
public BClass implements AInterface{
}
【问题讨论】:
-
您能详细说明一下吗?也许发布一些代码示例来显示您想要做什么(如果显示意图,伪代码或无法编译的代码就可以了)
-
我已经更新了我的问题。我希望现在更清楚了。
-
我不认为你能做到这一点,
AInterface的实现可以有很多,所以哪一个被注释,如果两个被注释怎么办,......另外,你的BClass应该明确实现AInterface -
抱歉忘记显式实现。我知道可以有很多实现。我只是觉得如果我决定使用不同的实现,更新现有代码会很麻烦。但如果没有其他办法,我想我别无选择。
-
改变实现:正常方式,你改变现有的
bind;按照您的方式,您从现有注释中删除注释(即现有代码!)并将其添加到新实现中。我看不出难度或工作量有什么不同