public class Generic2<T> {
T foo;
public T getFoo() {
return foo;
}
public void setFoo(T foo) {
this.foo = foo;
}
public static void main(String[] args) {
Generic2<String> ge1 = new Generic2<String>();
Generic2<Integer> ge2 = new Generic2<Integer>();
**ge1=ge2;**
}
}
直接这样赋值在Java中不被允许的,如何解决呢?可以用 ‘?’号通配符,并且使用extends来限定类型持有者的型态
如: Generic2<?> ge1 = new Generic2<String>();//?默认继承Object
Generic2<?> ge2 = new Generic2<Integer>();
ge1=ge2;
或者
Generic2<? extends List> ge1 = new Generic2<ArrayList>();
Generic2<? extends List> ge2 = new Generic2<ArrayList>();
ge1=ge2;
java 类型通配符
最新推荐文章于 2024-05-02 10:45:58 发布