Java, Reflection Tutorial - Generics |
일반적으로 Generics 정보는 runtime 에 사라진다고 알고 있지만 꼭 그렇지만은 않다.
The Generics Reflection Rule of Thumb
일반적으로 List 와 같은 녀석들은 어떤 Generic 이 쓰였는지 알기 어렵다.
하지만 parameterized 된 method 나 field 를 조사해보면,
어떤 generic 이 사용되었는지 알 수 있다.
Generic Method Return Types
Method method = TestClass.class.getMethod( "getStringList", null );
Type returnType = method.getGenericReturnType();
if ( returnType instanceof ParameterizedType ){
Type[] typeArguments = ((ParameterizedType) returnType).getActualTypeArguments();
for( Type typeArgument : typeArguments ){
System.out.println( "typeArg = " + (Class)typeArgument );
}
}
위의 방법으로 java.lang.String 값을 얻어낼 수 있다.
Generic Method Parameter Types
Type[] genericParameterTypes = method.getGenericParameterTypes();
for( Type genericParameterType : genericParameterTypes ){
if ( genericParameterType instanceof ParameterizedType ){
Type[] parameterArgTypes = ((ParameterizedType) genericParameterType).getActualTypeArguments();
for( Type parameterArgType : parameterArgTypes ){
System.out.println( "paramArg = " + (Class)parameterArgType );
}
}
}
Generic Field Type
Type genericFieldType = field.getGenericType();
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Java] Reflection Tutorial - Array (0) | 2013.12.30 |
---|---|
[android] navigation drawer close and open listener set. (0) | 2013.12.27 |
[android] LocalBroadcastManager 이야기. (0) | 2013.12.23 |
[Java] Reflection Tutorial - Annotations. (0) | 2013.12.23 |
[android] Up Navigation 설정하기. (2) | 2013.12.19 |
댓글