相关疑难解决方法(0)

793
推荐指数
17
解决办法
30万
查看次数

使用Java反射更改私有静态final字段

我有一个带有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)

java reflection static final private

454
推荐指数
8
解决办法
22万
查看次数

如何在Java中获取调用者类

我想得到方法的调用者类,即

class foo{

  bar();

}
Run Code Online (Sandbox Code Playgroud)

在方法栏中,我需要获取类名foo,我找到了这个方法:

Class clazz = sun.reflect.Reflection.getCallerClass(1);
Run Code Online (Sandbox Code Playgroud)

但是,即使getCallerClasspublic,当我试着调用它时,Eclipse说:

访问限制:由于对所需库C:\ Program Files\Java\jre7\lib\rt.jar的限制,无法访问Reflection类型的方法getCallerClass()

还有其他选择吗?

java

57
推荐指数
5
解决办法
9万
查看次数

标签 统计

java ×3

design-patterns ×1

final ×1

private ×1

reflection ×1

singleton ×1

static ×1