我有静态最终字段的类,我想从我的上下文中初始化它们。我可以这样做吗?或者我必须寻找另一种解决方案?
答案 0 :(得分:3)
由于final
变量是在初始化期间必须完全定义一次的有效常量,因此不能使用Spring(或通常使用Java)执行此操作。不过请看:Java 5 - "final" is not final anymore。
答案 1 :(得分:0)
这是final
,这是怎么回事?
您可以通过使用非反射Java提供普通的setter来分配非 - final
静态变量。您可以使用Tomasz所指出的反射来设置最终字段。
答案 2 :(得分:0)
根据“matt b”的评论,你可以从变量声明中删除final,并在setter中实现“set once”功能。
例如:
private static String blammy = null;
public String getBlammy() { return blammy; }
public void setBlammy(String newValue)
{
if (StringUtils.isNotBlank(newValue)) // only set to a non blank value.
{
if (blammy == null) // set once functionality
{
blammy = newValue;
}
}
}