문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:reflection [2020/11/05 10:19] kwon37xi |
java:reflection [2023/11/30 14:53] (현재) kwon37xi |
||
|---|---|---|---|
| 줄 5: | 줄 5: | ||
| ===== Field/ | ===== Field/ | ||
| * 필드와 메소드의 선언 순서대로 리플렉션에서 값을 읽을 수 없다. | * 필드와 메소드의 선언 순서대로 리플렉션에서 값을 읽을 수 없다. | ||
| - | * 일반적으로 우연히 선언 | + | * JDK 6 부터 Reflection 에서 field/ |
| + | * [[https:// | ||
| ===== Accessing Private Field ===== | ===== Accessing Private Field ===== | ||
| 줄 41: | 줄 43: | ||
| assertThat(String.class.isAssignableFrom(Serializable.class)).isFalse(); | assertThat(String.class.isAssignableFrom(Serializable.class)).isFalse(); | ||
| </ | </ | ||
| + | |||
| + | ===== private static final 필드 읽기/ | ||
| + | * [[https:// | ||
| + | |||
| + | <code java> | ||
| + | |||
| + | class MyClass4 { | ||
| + | |||
| + | private static final Boolean enabled = Boolean.FALSE; | ||
| + | |||
| + | public static Boolean getEnabled() { | ||
| + | return enabled; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // " | ||
| + | Field field = MyClass4.class.getDeclaredField(" | ||
| + | field.setAccessible(true); | ||
| + | |||
| + | // " | ||
| + | Field modifiersField = Field.class.getDeclaredField(" | ||
| + | modifiersField.setAccessible(true); | ||
| + | modifiersField.setInt(field, | ||
| + | |||
| + | // 값 읽기 | ||
| + | Boolean fieldValue = (Boolean) field.get(null); | ||
| + | System.out.println(fieldValue); | ||
| + | |||
| + | // 값 쓰기 | ||
| + | field.set(null, | ||
| + | System.out.println(MyClass4.getEnabled()); | ||
| + | </ | ||
| + | |||