通过反射获取泛型信息
测试代码
public class Test11 {
public void test01 ( Map < String , User > map, List < User > list) {
System . out. println ( "test01" ) ;
}
public Map < String , User > test02 ( ) {
System . out. println ( "test02" ) ;
return null ;
}
public static void main ( String [ ] args) throws NoSuchMethodException {
Method method = Test11 . class . getDeclaredMethod ( "test01" , Map . class , List . class ) ;
Type [ ] genericParameterTypes = method. getGenericParameterTypes ( ) ;
for ( Type genericParameterType : genericParameterTypes) {
System . out. println ( "###" + genericParameterType) ;
if ( genericParameterType instanceof ParameterizedType ) {
Type [ ] actualTypeArguments = ( ( ParameterizedType ) genericParameterType) . getActualTypeArguments ( ) ;
for ( Type actualTypeArgument : actualTypeArguments) {
System . out. println ( actualTypeArgument) ;
}
}
}
Method method2 = Test11 . class . getDeclaredMethod ( "test02" , null ) ;
Type genericReturnType = method2. getGenericReturnType ( ) ;
System . out. println ( "###" + genericReturnType) ;
if ( genericReturnType instanceof ParameterizedType ) {
Type [ ] actualTypeArguments = ( ( ParameterizedType ) genericReturnType) . getActualTypeArguments ( ) ;
for ( Type actualTypeArgument : actualTypeArguments) {
System . out. println ( actualTypeArgument) ;
}
}
}
}