public class Test1<T> {
T age; //定义泛型变量,泛型T就相当于基本数据类型。
T first;
private T second;
public Test1(T age) {
this.age = age;
}
}
class B {
public static void main(String[] args) {
Test1<String> test1 = new Test1<>("13");//这里就体现了泛型的灵活性。我们可以传入任意的类型。
Test1<Integer> test2 = new Test1<>(15);
}
}
泛型方法
public <T> T Test2(T age) {
return age;
}
//我们可以传入任意类型的参数
1.3泛型的继承
如果我们要使用一个接口中的方法,那么我们可以利用泛型的继承来实现
public static <T extends Comparable> T Test3(T[] a){
//这样就继承了Comparable的方法
//但是这里的T只能使用 实现了Comparable接口的类。
}
public class Father {
}
class Son extends Father {
public static void main(String[] args) {
ArrayList<Father> list1 = new ArrayList<>();
ArrayList<Son> list2 = list1;//这是错误的❌
//他们两个没有任何关系
}
}
1.4类型擦除
类型擦除就是将我们的Java代码,转换成普通代码。
转换成它的顶级父类。
了解吧
public class Test1<T> {
T age;
T first;
//擦除后变成
Object age;
Object first;
}