문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:reflection [2014/09/28 13:53] kwon37xi |
java:reflection [2023/11/30 14:53] (현재) kwon37xi |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== Java Reflection ====== | ====== Java Reflection ====== | ||
| * [[http:// | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | ===== Field/ | ||
| + | * 필드와 메소드의 선언 순서대로 리플렉션에서 값을 읽을 수 없다. | ||
| + | * JDK 6 부터 Reflection 에서 field/ | ||
| + | * [[https:// | ||
| + | |||
| ===== Accessing Private Field ===== | ===== Accessing Private Field ===== | ||
| 줄 31: | 줄 38: | ||
| ===== Class.isAssignableFrom() ===== | ===== Class.isAssignableFrom() ===== | ||
| - | * '' | + | '' |
| + | <code java> | ||
| assertThat(Serializable.class.isAssignableFrom(String.class)).isTrue(); | assertThat(Serializable.class.isAssignableFrom(String.class)).isTrue(); | ||
| 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()); | ||
| + | </ | ||
| + | |||