键盘敲烂,年薪30万
目录
泛型的基础知识:
♥A 泛型的好处:
♠A 泛型擦除:
♣A 泛型的小细节:
泛型的使用:
①泛型类:
②⭐泛型接口:
③泛型方法:
泛型的通配符
为什么java中的泛型是伪泛型❓
例如:把数据存入String类的一个集合里
存 - 编译器会进行泛型检查,如果不是String,你的代码下面会出现~~~(编译错误)
,如果是String类,强转为Object类存到集合里
取 - 将Object类转换为对应得数据类型
如果定义一个类时,类型不确定,可以定义为泛型
public class MyArrayList{
private Object[] Obj = new Object[10];
private int size = 0;
public void add(E val){
Obj[size++] = val;
}
}
public class Demo1{
public static void main(String[] args){
MyArrayList list = new MyArrayList();
list.add(1);
}
}
public class MyList Implements List{
// 重写List的所有抽象方法
public void add(String e){……}
}
public class MyList Implements List{
public void add(E e){……}
}
当类中只有一个方法的类型不确定时,可使用泛型方法
public class Demo1{
public static void main(String[] args){
MyArrayList list = new MyArrayList();
ListUtil.addAll(list, 1, 2, 3);
}
class ListUtil{
public static void addAll(ArrayList list, E e1, E, e2, E e3){
list.add(e1);
list.add(e2);
list.add(e3);
}
}
}
泛型不具备继承性!!!
本方法不确定类型,但是只想要继承结构里面的对象!!!
? extends E
表示可以传递E和E的子类
? super E
表示可以传递E和E的父类
public static void method(ArrayList extends YE> e){……}
public static void method(ArrayList super YE> e)(……)
总结:
泛型提供了编译时类型检查,避免了在运行时出现类型转换错误。这确保了代码的类型安全性,并在编译时捕获错误。
通配符可以使用上限和下限来限制泛型的范围。 extends T>表示类型是T或T的子类, super T>表示类型是T或T的父类。
Java中的泛型在编译后会被擦除