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できます。これが、String だけでなく、さまざまな型を注入できる理由です。.)

于 2013-01-29T20:36:53.000 に答える