我有很多名为TabularResultSet类的带注释实例,我希望将多个类传递给静态最终属性。我怎么注射这个?我不认为它喜欢该物业的最终和静态性质。我必须直接在属性声明中调用注入器来分配值吗?
答案 0 :(得分:3)
可以让Guice注入静态字段。请参阅Guice文档中的Static Injections。
但我对static final
不确定。 final
字段也保证它们只被初始化一次(除非使用反射)。 Guice可以通过使用反射来解决这个问题(我知道Guice可以使用反射注入@Inject private final
个字段),但这是一个非常糟糕的解决方案。如果字段的值永远设置在静态初始化块(对于static
)或构造函数(对于非static
字段)之外,则它不应该具有final
。
但即使有可能,也不是一个好主意。静态与依赖注入相反。依赖注入是基于好莱坞原则:不打电话给我们,我们会打电话给你#34;。你不应该从Guice中查找一个值,你应该只是声明你需要它,而Guice会把它提供给你。