記錄Java中修改final值

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