gpt4 book ai didi

java - Android:使用 Java 反射更改私有(private)静态最终字段

转载 作者:IT老高 更新时间:2023-10-28 21:02:22 26 4
gpt4 key购买 nike

Change private static final field using Java reflection

我按照上面链接中的说明使用 java 反射更改了私有(private)静态最终字段。我有一个名为“数据”的对象。在“数据”中,有一个名为“类型”的私有(private)静态最终变量。我想将“类型”设置为空。这是我的代码。

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 类中的字段。

我该如何解决这个问题?

最佳答案

这适用于非静态字段。

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

关于java - Android:使用 Java 反射更改私有(private)静态最终字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11185453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com