我有一个带有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) 我想得到方法的调用者类,即
class foo{
bar();
}
Run Code Online (Sandbox Code Playgroud)
在方法栏中,我需要获取类名foo,我找到了这个方法:
Class clazz = sun.reflect.Reflection.getCallerClass(1);
Run Code Online (Sandbox Code Playgroud)
但是,即使getCallerClass是public,当我试着调用它时,Eclipse说:
访问限制:由于对所需库C:\ Program Files\Java\jre7\lib\rt.jar的限制,无法访问Reflection类型的方法getCallerClass()
还有其他选择吗?