泛型方法:
package cn.ensource.d11_generics_method;public class Test {public static void main(String[] args) {// 泛型方法String res = test("Java");System.out.println(res);Dog dog1 = test(new Dog());System.out.println(dog1);}// 泛型方法public static <T> T test(T t) {return t;}
}
泛型方法的基本使用。
package cn.ensource.d11_generics_method;import java.util.ArrayList;public class Test {public static void main(String[] args) {// 泛型方法String res = test("Java");System.out.println(res);Dog dog1 = test(new Dog());System.out.println(dog1);// 需求:所有的汽车参加比赛:ArrayList<Car> cars = new ArrayList<>();cars.add(new BWM());cars.add(new BENZ());go(cars);ArrayList<BWM> bwms = new ArrayList<>();bwms.add(new BWM());bwms.add(new BWM());go(bwms);ArrayList<BENZ> benzs = new ArrayList<>();benzs.add(new BENZ());benzs.add(new BENZ());go(benzs);// ArrayList<Dog> dogs = new ArrayList<>();
// dogs.add(new Dog());
// dogs.add(new Dog());
// go(dogs);}// 泛型方法public static <T> T test(T t) {return t;}//public static <T extends Car> void go(ArrayList<T> a) {}
}
通配符:?在使用的时候代表一些类型。
上限
super是下限
通配符:
就是"?",可以在使用泛型的时候代表一切类型,E、T、K、V是在定义泛型的时候使用。
泛型的上下限:
要求:能理解、看到别人写代码就可以了。
泛型的注意事项:
泛型的擦除问题和注意事项:
泛型是工作在编译阶段的,一旦程序编译成class文件,class文件中就不存在泛型了,这就是泛型擦除。
泛型不支持基本数据类型,只能支持对象类型(引用数据类型)。
XJad-class反编译工具:
编译阶段,底层恢复成Object类型来进行数据的处理,强转。
Java的语法知识基本上都学完了。
然后我们就开始学习API,调人家的方法来完成功能就可以了。
下面,我们的思维就要开始转换。