3
จะ จำกัด setAccess ได้เฉพาะการใช้งานที่ "ถูกต้อง" ได้อย่างไร
ยิ่งฉันเรียนรู้เกี่ยวกับพลังของjava.lang.reflect.AccessibleObject.setAccessibleมันมากเท่าไหร่ฉันก็ยิ่งประหลาดใจมากขึ้นในสิ่งที่สามารถทำได้ สิ่งนี้ดัดแปลงมาจากคำตอบของฉันสำหรับคำถาม ( การใช้การสะท้อนเพื่อเปลี่ยน File.separatorChar ขั้นสุดท้ายแบบคงที่สำหรับการทดสอบหน่วย ) import java.lang.reflect.*; public class EverythingIsTrue { static void setFinalStatic(Field field, Object newValue) throws Exception { field.setAccessible(true); Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(null, newValue); } public static void main(String args[]) throws Exception { setFinalStatic(Boolean.class.getField("FALSE"), true); System.out.format("Everything is %s", false); // …
100
java
security
reflection