private static final Class<? extends UserManager> type;
private static void setType(final Class <? extends UserManager> theType){
if(type == null) type = theType;
else throw new IllegalStateException("Type already set.");
}
我希望得到类似上面的内容,但它不会编译,因为type
不是final
任何人都知道如何在Java中执行此操作?有可能吗?
答案 0 :(得分:2)
这本质上是不可能的
final
表示初始化完成后无法更改它。
答案 1 :(得分:0)
默认情况下,这是不可能的,但是使用反射:)都可能
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, newValue);