我正在嘗試使用Jersey和HK2。我需要真正的古怪的類型綁定:HK2 TypeLiteral和通配符
List<TransformationService<? extends Transformation, ? extends TransformationInfor>>
所以,我有我的粘結劑定義如下:
resourceConfig.register(new AbstractBinder() {
@Override
protected void configure() {
List<TransformationService<? extends Transformation, ? extends TransformationInfo>> transformationServices = ... ;
bind(transformationServices)
.to(new TypeLiteral<List<TransformationService<? extends Transformation, ? extends TransformationInfo>>>() {});
// This class needs the list for its construction
bind(TransformationServiceImpl.class).to(TransformationService.class);
}
});
當我運行的代碼,雖然我得到不同的是我的名單不能注入(包裝ommitted):
[11/20/15 16:46:34] WARNING org.glassfish.jersey.internal.Errors logErrors : The following warnings have been detected: WARNING: Unknown HK2 failure detected:
MultiException stack 1 of 3
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=List<TransformationService<? extends ...Transformation,? extends ...TransformationInfo>>,parent=TransformationServiceImpl,qualifiers={},position=3,optional=false,self=false,unqualified=null,334434299)
at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:74)
at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:214)
有關如何注入這樣的怪人與HK2的任何提示?
我認爲這是在這裏找到答案:http://stackoverflow.com/questions/23992714/how-to-inject-an-unbound-generic-type-in-hk2 –