사용자 도구

사이트 도구


java:reflection

Java Reflection

Field/Method 선언 순서

  • 필드와 메소드의 선언 순서대로 리플렉션에서 값을 읽을 수 없다.
  • 일반적으로 우연히 선언 순서대로 Field 목록 과 Method 목록을 얻을 수 있는 것 처럼 보이지만, 언제 뒤틀릴지 모르므로 신뢰해서는 안된다.

Accessing Private Field

PrivateObject privateObject = new PrivateObject("The Private Value");
 
Field privateStringField = PrivateObject.class.
            getDeclaredField("privateString");
 
privateStringField.setAccessible(true);
 
String fieldValue = (String) privateStringField.get(privateObject);
System.out.println("fieldValue = " + fieldValue);

Accessing private method

PrivateObject privateObject = new PrivateObject("The Private Value");
 
Method privateStringMethod = PrivateObject.class.
        getDeclaredMethod("getPrivateString", null);
 
privateStringMethod.setAccessible(true);
 
String returnValue = (String)
        privateStringMethod.invoke(privateObject, null);
 
System.out.println("returnValue = " + returnValue);

Class.isAssignableFrom()

A.class.isAssignableFrom(B.class)A a = new B()가 가능한지를 묻는 것이라고 보면된다.

assertThat(Serializable.class.isAssignableFrom(String.class)).isTrue();
assertThat(String.class.isAssignableFrom(Serializable.class)).isFalse();
java/reflection.txt · 마지막으로 수정됨: 2020/11/05 10:19 저자 kwon37xi