я собирался Повсеместно этой ссылкойИспользование параметризованного типа для определения типа
Java Generic Class - Determine Type
Я попытался с помощью этой программы.
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 вывод как 1
но он печатает 2
. Пожалуйста, помогите мне в понимании этого. Благодарю.
Из-за стирания типа вы не можете определить общий тип во время выполнения. – mike