泛型就是 任意类型
比如我们有一个需求,写一个类,这个类可以把传入的任何类型数据转化为字符串
我们会写
重载多个类型的方法
class a {
static String tos(Integer in){
return in.toString()
}
static String tos(Double in2){
return in2.toString()
}
}
或者用泛型,定义一个T代替各种如Integer或Double等等其他类型
class a<T> {
private T in;
static String tos(T in){
return a.toString()
}
}
调用
Double a;
Integer b;
new a().tos(a);
new a().tos(b);
明显泛型更简洁
但是 T 范围太广了,任何类型都可以,比如传入一个List也可以,现在我们想只传入 数字 相关的类型。
Integer和Double都是 Number的子类,那我们限制只能传Number的子类就可以了。
class a<T extends Number> {
private T in;
static String tos(T in){
return a.toString()
}
}
<T extends Number>
这种写法叫上界通配符