Student类里有个ClassRoom成员,目标是修改ClassRoom里的数据
public class Student {
private static String name = "anshon";
private static ClassRoom classRoom = new ClassRoom("23");
}
public class ClassRoom {
private final String num;
private final String level;
public ClassRoom(String num) {
this.num = num;
this.level = "high";
}
}
try{
Field field = Student.class.getDeclaredField("classRoom");
field.setAccessible(true);
ClassRoom room = (ClassRoom) field.get(null);
Field levelField = ClassRoom.class.getDeclaredField("level");
levelField.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("accessFlags");
modifiersField.setAccessible(true);
modifiersField.setInt(levelField, levelField.getModifiers() & ~Modifier.FINAL);
String level = (String) levelField.get(room);
Log.e(TAG, "pre level: " + level);
levelField.set(room, "middle");
Log.e(TAG, "cur level: " + levelField.get(room));
}catch(Exception e){
e.printStackTrace();
}