内些官方的话我就不说了。我觉得泛型就是一种类型参数。
解释一下什么我这里的类型参数:就是方法里面传的是参数,类型参数就是这个参数是类型,你需要什么类型就传什么类型,像传参数那样传类型。
泛型可以用在方法上,可以用在类上,也可以用在接口上。
即:泛型方法,泛型类,泛型接口。
格式:
class fanxing{
public void action(T t){
System.out.println("这里的泛型是什么类型?" + t);
}
}
这就是泛型方法的格式,在返回类型之前先声明,
泛型参数能用来表示返回值类型即:
public泛型类T actions(T t ){ return null; }
就是可以确定类型的类
好!疑问了?我就奇了怪了,类本身就是类型,你还给我传类干甚?嫌我头发掉的太慢?
咱先看格式:
class fanxings{ public T add(T e){ return e; } public void add(T e,T a){ System.out.println("我简单写一下,方法重载"); } public void sub(T t){ } }
我刚发现泛型类里定义泛型方法不声明
回归正题:
为什么需要泛型类,你可以这么想:
类是一个空白的纸盒子,泛型就是标签,你给盒子贴标签,再对盒内的东西进行操作。
盒子一旦贴上了标签,就是告诉别的类型不可以进我的盒子,我是名牌。我要对我的名牌东西进行操作了。
interface fanxinginter{ void add(T t); }
借口内的方法只对T这种类型进行操作。
泛型通配符?代替具体的类型
class Car{
}
class BMW extends Car{
}
class Benchi extends Car{
}
class RMain{
public static void main(String[] args) {
List bs = new ArrayList<>();
List cs = new ArrayList<>();
//2.add(bs);
// 3.add(cs);
}
public static void add(List cars){
}
}
在2,3处的代码位置上 参数应该传什么类型呢,传bs,还是cs,按道理你应该传List
你只能使用通配符
就像这样:
public static void add(List> cars){
}
这样就可以传任何类型的列表了,注意是任何类型,你又想只传车的子类怎么办?
泛型上下限public static void add(List extends Car> cars){
}
使用上面的格式告诉java你要传的类型必须使car的子类哦!



