为什么要用泛型(泛型类)
创建一个实体类时,给他一个形参的类型,但是他的实体类却需要不同的类型,(如字符串类型、数值或小数类型),这个时候这个形参就不知道需要什么类型了(也可以每个类型都创建一个实体类,那样就会代码太多了),泛型就像是设置一个未知数T(就像是小时候做题设置的二元一次方程,这个数是自己设置的,X,Y,Z都可以),等到创建的对象需要的时候,可以把这个需要属性赋值给T (需要把tostring,getset方法,有参和无参构造都写出来)
//实体类aaa
public class aaa<T> {
public T x;
public T y;
public aaa(T x, T y) {
this.x = x;
this.y = y;
}
public aaa() {
}
}
现在只需要修aaa对象前面这个Integer的数据格式,就可以改变aaa对象里面数据的格式了,这就是泛型
泛型方法和泛型静态方法的区别
静态方法里面的泛型占位符和类中的泛型占位符没有任何关系
以下是执行结果
泛型接口
实现这个接口
使用这个接口
泛型通配符<?>
?用于接收数值的,可以接收所有的类型,作用想当于占位符,用哪个字符,就可以传那个
integer可以换成任意格式,需要修改下面传参的方法、
泛型的上限以及下限
泛型的上下限就是指方法里面的未知数的类型<?> 的上下限
<? extends Number>就是说泛型的上限就是Number,只能与他相等不能超过它,如
Number,Integer,int都可以,Object就不行了,因为Object的类型比Number大(da的方法哪里就会爆一个类型不符的错)
同理<? super Number>就是泛型的下限就是Number,只有Number极其以上的类型可以使用,其他类型就是报错