将多个接口实现注入类构造函数

时间:2013-11-26 10:25:01

标签: java dependency-injection guice

我是Java Guice的新手,我在设计应用程序时遇到了麻烦 我会尽量简单地解释我的设计和想要的结果。

我有一个名为Ialgorithm的界面,以及该界面的3个实现,例如IalgorithmAIalgorithmBIalgirthmC

我有一个名为myClass的类,其中包含以下构造函数:

public myClass(Ialgorithm alg) {...}

现在我希望能够使用注释注入Ialgorithm接口的一个实现的实例: 我想最后能够写在我的主要内容:

// ... intialize an Injector with a Moudle that extents AbstractModule
myClass a = injecotr.getInstance(key.get(myClass.class,Aannotation.class));
myClass b = injecotr.getInstance(key.get(myClass.class,Bannotation.class));
myClass c = injecotr.getInstance(key.get(myClass.class,Cannotation.class));

我在网上阅读了一些教程,但我找不到实现这一目标的确切方法。

此外,在上述问题解决后,我提出了一个问题: 实际上,第三个实现IalgirthmC与包含默认构造函数的其他两个实现不同:它的构造函数是:

public IalgorithmC(Ialgorithm,int n) {...}

现在它变得更复杂......因为我希望Guice注入Ialgorithm参数,但是int参数不应该由Guice(@Assisted)注入,而IalgorithmC的整个实例应该是使用myClass时注入Cannotaion
当然,我应该为Ialgorithm中的内部IalgorithmC提供int参数和注释的值。

谢谢大家的帮助。

1 个答案:

答案 0 :(得分:1)

这篇question讨论了guice中多个实现的一个解决方案。