사용자 도구

사이트 도구


java:reflection

차이

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

차이 보기로 링크

다음 판
이전 판
java:reflection [2014/06/21 23:57]
kwon37xi 새로 만듦
java:reflection [2021/10/27 10:05] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Java Reflection ====== ====== Java Reflection ======
   * [[http://tutorials.jenkov.com/java-reflection/index.html|Java Reflection Tutorial]]   * [[http://tutorials.jenkov.com/java-reflection/index.html|Java Reflection Tutorial]]
 +  * [[http://www.javacodegeeks.com/2014/11/java-reflection-api-tutorial.html|Java Reflection API Tutorial]]
 +
 +===== Field/Method 선언 순서 =====
 +  * 필드와 메소드의 선언 순서대로 리플렉션에서 값을 읽을 수 없다.
 +  * JDK 6 부터 Reflection 에서 field/method 순서에 따라 응답을 주기는 하고 있으며, 이후 버전도 이런 기조를 유지하고는 있으나 reflection API에서는 이 순서에 대해 명시하지 않고 있고, 따라서 이 순서가 변경될 가능성이 존재하는 것도 사실이다. 그러나 그런일이 없을 거라고 예상한다.
 +    * [[https://coderedirect.com/questions/143527/java-reflection-getting-fields-and-methods-in-declaration-order|[Solved] Java Reflection: Getting fields and methods in declaration order - Code Redirect]]
 +
  
 ===== Accessing Private Field ===== ===== Accessing Private Field =====
줄 13: 줄 20:
 String fieldValue = (String) privateStringField.get(privateObject); String fieldValue = (String) privateStringField.get(privateObject);
 System.out.println("fieldValue = " + fieldValue); System.out.println("fieldValue = " + fieldValue);
-</ocde>+</code>
  
 ===== Accessing private method ===== ===== Accessing private method =====
줄 30: 줄 37:
 </code> </code>
  
 +===== Class.isAssignableFrom() =====
 +''A.class.isAssignableFrom(B.class)''는 ''A a = new B()''가 가능한지를 묻는 것이라고 보면된다.
 +<code java>
 +assertThat(Serializable.class.isAssignableFrom(String.class)).isTrue();
 +assertThat(String.class.isAssignableFrom(Serializable.class)).isFalse();
 +</code>
java/reflection.1403362637.txt.gz · 마지막으로 수정됨: 2014/06/21 23:57 저자 kwon37xi