java可以通过反射修改private static final的属性吗?

java可以通过反射修改private static final的属性吗?
java可以通过反射修改private static final的属性的值吗?

public class EverythingIsTrue {
static void setFinalStatic(Field field, Object newValue) throws Exception {
field.setAccessible(true);

Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

field.set(null, newValue);
}
public static void main(String args[]) throws Exception {
setFinalStatic(Boolean.class.getField("FALSE"), true);

System.out.format("Everything is %s", false); // "Everything is true"
}
}

试了下。貌似可以。

需要设置下虚拟机不去检测私有属性。具体方法可以搜一下google
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-19
你可以得到,但是不可以修改
相似回答