我正在通过这个链接
我试过这个程序。
package my;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class GenericTypeIdentification {
public static void main( String args[] ) {
Node<Integer> obj = new GenericTypeIdentification().new SubNode<Integer>( 1 );
ParameterizedType parameterizedType = ( ParameterizedType ) obj.getClass().getGenericSuperclass();
Type clazz = parameterizedType.getActualTypeArguments()[0];
if ( clazz == Integer.class ) {
System.out.println( 1 );
}
else {
System.out.println( 2 );
}
}
class Node<T> {
private final T value;
public Node( T val ) {
this.value = val;
}
public T evaluate() {
return value;
};
}
class SubNode<T> extends Node<T> {
private final T value;
public SubNode( T val ) {
super( val );
value = val;
}
@Override
public T evaluate() {
return value;
};
}
}
我的理解是它应该 printh output as1
但它会打印2
. 请帮助我理解这一点。谢谢。