使用反射修改final属性
来源:互联网 发布:php autoload spl 编辑:程序博客网 时间:2024/05/08 02:56
情型1:static final属性,无法修改其值。
package m5.d7;
import java.lang.reflect.Field;
public class FieldTest {
public static void main(String[] args) {
try {
A a = new A();
Field field = a.getClass().getDeclaredField("a");
field.setAccessible(true);
field.set(a, 2);
System.out.println(field.get(a));
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
class A {
private static final int a = 1;
}
运行结果:
java.lang.IllegalAccessException: Can not set static final int field m5.d7.A.a to java.lang.Integer
at sun.reflect.UnsafeFieldAccessorImpl.throwFinalFieldIllegalAccessException(Unknown Source)
at sun.reflect.UnsafeQualifiedStaticIntegerFieldAccessorImpl.set(Unknown Source)
at java.lang.reflect.Field.set(Unknown Source)
at m5.d7.FieldTest.main(FieldTest.java:16)
情型2:final属性,可以修改其值。
package m5.d7;
import java.lang.reflect.Field;
public class FieldTest {
public static void main(String[] args) {
try {
A a = new A();
Field field = a.getClass().getDeclaredField("a");
field.setAccessible(true);
field.set(a, 2);
System.out.println(field.get(a));
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
class A {
private final int a = 1;
}
运行结果:
2
- 使用反射修改final属性
- Java 反射修改 final 属性值
- Java 反射有效的修改 final 属性值
- java 反射机制修改private final变量
- Java_反射_修改final static问题
- 在Android中使用反射获取并修改private static final成员
- 反射修改VO属性值
- 通过反射修改 被 private final static修饰的成员
- Spring基于注解的反射修改属性
- 反射 属性 接口的使用
- C# 使用反射访问属性
- JAVA反射修改常量,以及其局限(修改private final限制)
- 使用final修饰属性后,属性的特征
- java 反射调用 私有构造类中 private static final 属性的方法
- 用Java 反射机制修改类的pravite final static 变量
- 利用反射对修饰符为final的成员变量进行修改
- 使用反射遍历对象属性置取值
- 使用反射调用私有属性和方法
- 静态变量的一个小要点
- 企业会计准则体系(2006)
- Windows 应用生态系统 (4)
- iOS开发常用网站
- 让Hibernate自动重新连接数据库——使用c3p0连接池
- 使用反射修改final属性
- If love, deep love:10 Most Useful iOS Libs
- Windows 应用生态系统 (5)
- Windows 应用生态系统 (6)
- Serv-u自动脱机解决方法
- Log4j配置(xml和property两种)
- Windows 应用生态系统 (7)
- jboss out of memory 异常
- 「is a」&&「has a」