假设我有一个值绑定到某个模块中带有“xxx”注释的字符串,但是我希望从另一个注释名称(比如“yyy”)获得此常量。无论如何我可以给出这样的同义词吗?
例如,某些模块包含:
bindConstant().annotatedWith(Names.named("xxx")).to("testing");
我想写一些类似的东西:
bindConstant().annotatedWith(Names.named("yyy")).to(value of xxx);
答案 0 :(得分:3)
如果你看一下ConstantBindingBuilderImpl.java
,你会发现它只是用于从基元推断出绑定类型的语法糖。 Guice不允许您将常量绑定到另一个绑定,但它确实允许您将“正常”绑定绑定到另一个绑定。
bind(String.class).annotatedWith(Names.named("yyy"))
.to(Key.get(String.class, Names.named("xxx")));
这看起来没有bindConstant()
那么有用,因为你必须明确指定绑定的类型,但实际情况是bindConstant()
在幕后悄悄地为你做这件事。 (顺便说一句,Guice中的String元素有点神奇 - 如果你将注释绑定到String,你可以inject it as a variety of other primitive types。这就是Names.bindProperties
可以注入各种类型的原因,而不仅仅是字符串。)