我有一个带有private static final字段的类,不幸的是,我需要在运行时更改.
使用反射我得到这个错误: java.lang.IllegalAccessException: Can not set static final boolean field
有没有办法改变价值?
Field hack = WarpTransform2D.class.getDeclaredField("USE_HACK");
hack.setAccessible(true);
hack.set(null, true);
Run Code Online (Sandbox Code Playgroud) 当我经历时,System.class我发现了一些对我来说很奇怪的东西.当你看到System.in, System.out, System.err这些的声明被decalred,final static但也初始化null
public final static InputStream in = null;
public final static PrintStream out = null;
public final static PrintStream err = null;
Run Code Online (Sandbox Code Playgroud)
既然final只能初始化一次,那么这些是如何管理的?
当我们使用System.out.print("...");它显然out不是,null但不是final static如何不是null?
那么任何人都可以解释如何初始化已经宣布为最终的?