泛型方法:
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,调人家的方法来完成功能就可以了。
下面,我们的思维就要开始转换。