在静态最终属性上注入Guice?

时间:2015-03-14 02:35:44

标签: guice

我有很多名为TabularResultSet类的带注释实例,我希望将多个类传递给静态最终属性。我怎么注射这个?我不认为它喜欢该物业的最终和静态性质。我必须直接在属性声明中调用注入器来分配值吗?

1 个答案:

答案 0 :(得分:3)

可以让Guice注入静态字段。请参阅Guice文档中的Static Injections

但我对static final不确定。 final字段也保证它们只被初始化一次(除非使用反射)。 Guice可以通过使用反射来解决这个问题(我知道Guice可以使用反射注入@Inject private final个字段),但这是一个非常糟糕的解决方案。如果字段的值永远设置在静态初始化块(对于static)或构造函数(对于非static字段)之外,则它不应该具有final

但即使有可能,也不是一个好主意。静态与依赖注入相反。依赖注入是基于好莱坞原则:不打电话给我们,我们会打电话给你#34;。你不应该从Guice中查找一个值,你应该只是声明你需要它,而Guice会把它提供给你。