A a = new A();
//先把name字段通过反射取出来
Field myVar = a.getClass().getDeclaredField("myVar");
myVar.setAccessible(true);
//通过反射把myVar的final修饰符去掉
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(myVar, myVar.getModifiers() & ~Modifier.FINAL);
//设置值
myVar.set(a, 30);
//增加上final修饰符
modifiersField.setInt(myVar, myVar.getModifiers() & ~Modifier.FINAL);
System.out.format("%s",a.toString());
// 再使用反射再把name值取出来
Object name = myVar.get(a);
// 把取出来的name值进行打印
System.out.println(name.toString());
记录Java中修改final值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.