我不明白为什么以下代码有效:
class MyMap<T> {
T value;
public void set(T value) {
this.value = value;
}
public T get() {
return value;
}
}
public class GenTest {
public static void main(String args[]) {
MyMap<String> map = new MyMap<String>(); // *
map.set("dog");
System.out.println(map.get());
}
}
但是,如果我将标记的*行更改为:
MyMap<? extends String> map = new MyMap<String>();
然后它不会编译。
如果我有这个:
MyMap<? super String> map = new MyMap<String>();
你能帮帮我吗?提前谢谢!