在例子中理解
我们的Demo类:
package test;
public class Demo <T>{
private T demo;
public T getDemo() {
return demo;
}
public void setDemo(T demo) {
this.demo = demo;
}
public Demo(T demo) {
this.demo = demo;
}
}
通常我们会用以下的方式来使用Demo类:
Demo<String> demo = new Demo<String>("Demo");
这是因为我们知道使用Demo类时具体的类型是String,如果我们不知道具体的类型时我们会用Object类来代替:
Demo<Object> demo = new Demo<Object>("Demo");
但是当我们对Demo类的泛型进行如下限制的时候,显然就不能再用Object了:
package test;
public class Demo <T extends Collection>{
......
}
这个时候就需要我们的通配符“?”了:
Demo<?> demo = new Demo<?>("Demo");
使用了通配符,在使用getDemo()方法时就要进行强制类型转换:
String demoString = (String)demo.getDemo();