假设我有一个值绑定到某个模块中用“xxx”注释的字符串,但我想从另一个注释名称(比如“yyy”)中获得这个常量。反正我可以给这样的同义词吗?
例如,某些模块包含:
bindConstant().annotatedWith(Names.named("xxx")).to("testing");
我想写一些类似的东西:
bindConstant().annotatedWith(Names.named("yyy")).to(value of xxx);
如果您看一下,ConstantBindingBuilderImpl.java
您会发现它只是用于从原语推断绑定类型的语法糖。Guice 不允许您将常量绑定到另一个绑定,但它允许您将“正常”绑定绑定到另一个绑定。
bind(String.class).annotatedWith(Names.named("yyy"))
.to(Key.get(String.class, Names.named("xxx")));
这看起来不如 有用bindConstant()
,因为您必须明确指定绑定的类型,但实际情况是bindConstant()
无论如何在幕后悄悄地为您执行此操作。(顺便说一下,Guice 中的 String 元素有点神奇——如果你已经将注解绑定到 String,你可以将它作为各种其他原始类型注入。这就是为什么Names.bindProperties
可以注入各种类型,而不仅仅是 Strings .)