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值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.