private Type resolveType ( Type beanType , Type beanType2 , Type type ) { if ( type instanceof ParameterizedType ) { if ( beanType instanceof ParameterizedType ) { return resolveParameterizedType ( ( ParameterizedType ) beanType , ( ParameterizedType ) type ) ; } if ( beanType instanceof Class < ? > ) { return resolveType ( ( ( Class < ? > ) beanType ) . getGenericSuperclass ( ) , beanType2 , type ) ; } } if ( type instanceof TypeVariable < ? > ) { if ( beanType instanceof ParameterizedType ) { return resolveTypeParameter ( ( ParameterizedType ) beanType , beanType2 , ( TypeVariable < ? > ) type ) ; } if ( beanType instanceof Class < ? > ) { return resolveType ( ( ( Class < ? > ) beanType ) . getGenericSuperclass ( ) , beanType2 , type ) ; } } return type ; }
Gets the actual types by resolving TypeParameters .