我有这样的领域:我如何在Guice中绑定这种类型?
@Inject(optional=true)
@Named(NAMED_ERROR_HANDLER)
private PolymorphicDispatcher.ErrorHandler<IScope> errorHandler = new PolymorphicDispatcher.NullErrorHandler<IScope>();
,我需要覆盖默认绑定(NullErrorHandler
)。我怎么做?
我有这样的领域:我如何在Guice中绑定这种类型?
@Inject(optional=true)
@Named(NAMED_ERROR_HANDLER)
private PolymorphicDispatcher.ErrorHandler<IScope> errorHandler = new PolymorphicDispatcher.NullErrorHandler<IScope>();
,我需要覆盖默认绑定(NullErrorHandler
)。我怎么做?
我没有PolymorphicDispatcher.ErrorHandler
和船上的儿子,但这种结合应该做的工作:
bind(new TypeLiteral<PolymorphicDispatcher.ErrorHandler<IScope>>(){})
.annotatedWith(Names.named(NAMED_ERROR_HANDLER))
.to(MyImpl.class);
这MyImpl
因为这样的事情:
public class MyImpl implements PolymorphicDispatcher.ErrorHandler<IScope> {
// methods from interface
}
的基本原理是解释here当你搜索TypeLiteral
。 (对不起,没有HTML-ID或锚点附近的部分)。
谢谢,这是有效的。在我的代码中,我使用了'Types.newParameterizedType(PolymorphicDispatcher.class,PolymorphicDispatcher.ErrorHandler.class,IScope.class)',但那不匹配。任何想法为什么? – 2012-07-25 08:32:52
您的评论中的类型匹配(使用一些缩写)'PD
你的意思是Guice? – 2012-07-24 14:58:40
'PolymorphicDispatcher'尖叫Xtext。对? – 2012-07-24 15:07:44
@LouisWasserman:固定标签。 – 2012-07-24 15:13:46