私はこのリンクを通り抜けていました
このプログラムで試しました。
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;
};
}
}
私の理解では、出力を次のよう1
に印刷する必要がありますが、印刷し2
ます。これを理解するのを手伝ってください。ありがとう。