본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Java] Reflection Tutorial - Generics

by 돼지왕왕돼지 2013. 12. 27.


 Java, Reflection Tutorial - Generics  

[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();



댓글0