사용자 도구

사이트 도구


java:reflection

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
java:reflection [2023/11/30 14:52]
kwon37xi
java:reflection [2023/11/30 14:53] (현재)
kwon37xi
줄 48: 줄 48:
  
 <code java> <code java>
-// Class declaration+
 class MyClass4 { class MyClass4 {
    
-    private static final Boolean enabled = Boolean.FALSE;+    private static final Boolean enabled = Boolean.FALSE; // 읽고 변경할 대상 필드
    
     public static Boolean getEnabled() {     public static Boolean getEnabled() {
줄 57: 줄 57:
     }     }
 } }
-1 
-2 
-3 
-4 
-5 
-6 
-7 
-8 
-9 
-10 
-11 
-12 
-13 
-14 
-15 
-16 
   
-// Get field instance+// "enabled" 필드 인스턴스 확보
 Field field = MyClass4.class.getDeclaredField("enabled"); Field field = MyClass4.class.getDeclaredField("enabled");
 field.setAccessible(true); // Suppress Java language access checking field.setAccessible(true); // Suppress Java language access checking
    
-// Remove "final" modifier+// "final" modifier 제거
 Field modifiersField = Field.class.getDeclaredField("modifiers"); Field modifiersField = Field.class.getDeclaredField("modifiers");
 modifiersField.setAccessible(true); modifiersField.setAccessible(true);
 modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
    
-// Get value+// 값 읽기
 Boolean fieldValue = (Boolean) field.get(null); Boolean fieldValue = (Boolean) field.get(null);
 System.out.println(fieldValue); // -> false System.out.println(fieldValue); // -> false
    
-// Set value+// 값 쓰기
 field.set(null, Boolean.TRUE); field.set(null, Boolean.TRUE);
 System.out.println(MyClass4.getEnabled()); // -> true System.out.println(MyClass4.getEnabled()); // -> true
 </code> </code>
  
java/reflection.txt · 마지막으로 수정됨: 2023/11/30 14:53 저자 kwon37xi