0

假设我有一个值绑定到某个模块中用“xxx”注释的字符串,但我想从另一个注释名称(比如“yyy”)中获得这个常量。反正我可以给这样的同义词吗?

例如,某些模块包含:

bindConstant().annotatedWith(Names.named("xxx")).to("testing");

我想写一些类似的东西:

bindConstant().annotatedWith(Names.named("yyy")).to(value of xxx);
4

1 回答 1

3

如果您看一下,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 .)

于 2013-01-29T20:36:53.000 回答