对于以下通用类,r = g行存在编译错误:
类型不匹配:无法从GenericTest1 转换为GenericTest1
如何解决?
public class GenericTest1<T> {
private T t;
public GenericTest1(T t) {
this.t = t;
}
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
public static void main(String[] args) {
GenericTest1<Integer> g = new GenericTest1<>(6);
GenericTest1<Number> r = g; <==here
}
}
最佳答案
这里的误解是GenericTest1<Number>
是GenericTest1<Integer>
的超类。不是,因此您必须分别投射每个成员。