1.public class Test<T extends Serializable>
如果知道extends 在这里的意思作用可以return掉了;
有些人疑问这里就是限定参数T必须是extends 后面的接口类型就行了。
public class Test<T extends Serializable> {
private T type;
public void setType(final T type) {
this.type = type;
}
public T getType() {
return type;
}
public static void main(final String[] args) {
final Test<String> t1 = new Test<String>();
t1.setType("d");
final String type2 = t1.getType();
final Test<Integer> t2 = new Test<Integer>();
t2.setType(2);
final Integer type3 = t2.getType();
}
}
改成这样不也可以吗?
public class TestO<Serializable> {
private Serializable type;
public void setType(final Serializable type) {
this.type = type;
}
public Serializable getType() {
return type;
}
public static void main(final String[] args) {
final TestO<String> t1 = new TestO<String>();
t1.setType("d");
final String type2 = t1.getType();
final TestO<Integer> t2 = new TestO<Integer>();
t2.setType(2);
final Integer type3 = t2.getType();
}
}
一看没啥问题,泛型功能也基本实现了。但是实际上这里参数并没有限定为java.io.Serializable类型的,下面的那个代码和
public class TestO<T> 没啥区别。就是任意类型了。
所以,泛型中要限定参数是某种类型的范围内,只能用<T extends Serializable>这种写法