Android:改变使用Javareflection的私人静态最终字段

使用Javareflection更改私有静态最终字段

我按照上面的链接中的说明,使用javareflection来更改私有静态最终字段。 我有一个名为“数据”的对象。 在“data”里面,有一个名为“type”的私有静态最终variables。 我想设置“types”为空。 这是我的代码。

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:修饰符

我猜“修饰符”不是在Android的Field类中的字段。

我该如何解决?

  • 我可以重写一个隐藏(但公开)的方法,并调用其超级方法?
  • 如何访问Android源中的setPreferredNetworkType
  • 用ClassLoaderreplace一个预先加载的类?
  • 我应该离开生产代码中的蓝牙reflection黑客?
  • Android Java objModelClass.getClass()。getDeclaredFields()返回“$ change”作为一个字段
  • Android:使用javareflection更改私有静态最终字段
  • Android活动如何被实例化(使用reflection)?
  • 使用使用java.beans类的jar(Introspector,BeanInfo或PropertyDescriptor)
  • 这工作。

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