
package com.itheima.d11_genericity_limit;
import java.util.ArrayList;
public class GenericDemo {
public static void main(String[] args) {
// 这是一个泛型类(集合) 表示这个集合存储的都是BMW类 的对象
ArrayList<BMW> bmws = new ArrayList<>();
bmws.add(new BMW()); // 添加对象
bmws.add(new BMW());
bmws.add(new BMW());
go(bmws);
ArrayList<BENZ> benzs = new ArrayList<>();
benzs.add(new BENZ()); // 添加对象
benzs.add(new BENZ()); // 添加对象
benzs.add(new BENZ()); // 添加对象
go(benzs);
ArrayList<Dog> dogs = new ArrayList<>();
dogs.add(new Dog());
dogs.add(new Dog());
dogs.add(new Dog());
// go(dogs); // 本来只要求车类进来,但是不写上下限,会让狗类都进来
}
/**
* 所有车比赛
* @param cars
*/
// 泛型的通配符:? 可以接收任意数据的类型 // 这样写了?extends Car: ?必须是Car或者其子类 泛型上限
public static void go(ArrayList<? extends Car> cars){ // 该go方法,接收BMW宝马集合的对象 不能接收BENZ奔驰集合对象
}
}
// 继承只是能使用父类的方法 这是写继承是为了设置泛型的上下限 ?extends Car: ?必须是Car或者其子类 泛型上限
// ?super Car: ?必须是Car或者其父类 泛型下限(这个用的少)
class BENZ extends Car{ // 虽然BMW和BENZ都继承了Car但是ArrayList<BMW> 和ArrayList<BENZ> 与 ArrayList<Car> 没有关系
}
class BMW extends Car{
}
class Car {
}
class Dog {
}