0

我有一个像这样的课程:

class Foo {
    Foo(@Named("x") x) { ... }
}

x从一个Properties对象绑定:

Names.bindProperties(binder(), props);

但是如果x没有设置,我想跳过 binding Foo。实现此目的的一种方法是:

if (props.contains("x")) {
    bind(Foo.class);
}

但是有更好的方法吗?

if (namedPropsBound(Foo.class)) { // how to implement this method?
    bind(Foo.class);
}
4

1 回答 1

1

是:用 @Nullable 注释 x 应该可以解决问题。当然,这只允许在 Foo 中注入缺失的 X,并不能避免注入 Foo。

试试这个:您可以使用http://code.google.com/p/google-guice/wiki/CustomInjections中描述的 TypeListener 。每当 Guice 尝试注入 Foo 时,您可以根据属性的状态阻止它。

于 2012-11-28T07:25:25.963 回答