Android:使用java反射更改私有静态最终字段

jas*_*as7 19 java reflection android

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

我按照上面链接中的说明使用java反射更改了私有静态final字段.我有一个名为"数据"的对象.在"数据"里面,有一个名为"type"的私有静态最终变量.我想将"type"设置为null.这是我的代码.

Field field = data.getClass().getDeclaredField("type");
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(data, null);
Run Code Online (Sandbox Code Playgroud)

我尝试在Java 1.7上使用类似的代码执行此操作.但是在Android上运行此代码会产生以下错误: java.lang.NoSuchFieldException:modifiers

我猜"修饰符"不是Android上Field类中的一个字段.

我该如何解决?

jas*_*as7 10

这适用于非静态字段.

Field field = data.getClass().getDeclaredField("type");
field.setAccessible(true);
field.set(data, null);
Run Code Online (Sandbox Code Playgroud)