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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (63)

我遵循上面链接中的指示,使用java反射来更改私有静态最终字段。我有一个名为“数据”的对象。在“数据”里面,有一个名为“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);

我试着用类似的代码在Java 1.7上做这件事,它工作。但在Android上运行此代码会产生以下错误: java.lang.NoSuchFieldException:修饰符

我猜“modifiers”不是Android上的Field类中的字段。

我该如何解决?

提问于
用户回答回答于

Field field = data.getClass().getDeclaredField("type"); field.setAccessible(true); field.set(data, null);

扫码关注云+社区