假设我有一个值绑定(bind)到某个模块中用“xxx”注释的字符串,但我希望可以从另一个注释名称(例如“yyy”)获取此常量。无论如何我可以给出这样的同义词吗?
例如,某些模块包含:
bindConstant().annotatedWith(Names.named("xxx")).to("testing");
我想写这样的东西:
bindConstant().annotatedWith(Names.named("yyy")).to(value of xxx);
最佳答案
如果你看ConstantBindingBuilderImpl.java
您会看到它只是用于从原语推断绑定(bind)类型的语法糖。 Guice 不允许您将常量绑定(bind)到另一个绑定(bind),但它确实允许您将“正常”绑定(bind)绑定(bind)到另一个绑定(bind)。
bind(String.class).annotatedWith(Names.named("yyy"))
.to(Key.get(String.class, Names.named("xxx")));
这看起来没有 bindConstant()
有用,因为您必须显式指定绑定(bind)类型,但实际情况是 bindConstant()
悄悄地这样做不管怎样,这都是在幕后为你准备的。 (顺便说一句,Guice 中的 String 元素有点神奇——如果您将注释绑定(bind)到 String,则可以 inject it as a variety of other primitive types 。这就是为什么 Names.bindProperties
可以注入(inject)各种类型,而不仅仅是字符串。)
关于java - Guice 如何将带注释的常量重新绑定(bind)到另一个名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585640/