我是Java Guice的新手,我在设计应用程序时遇到了麻烦
我会尽量简单地解释我的设计和想要的结果。
我有一个名为Ialgorithm
的界面,以及该界面的3个实现,例如IalgorithmA
,IalgorithmB
,IalgirthmC
。
我有一个名为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参数和注释的值。
谢谢大家的帮助。