[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符

键盘敲烂,年薪30万

目录

泛型的基础知识:

♥A 泛型的好处:

♠A 泛型擦除:

♣A 泛型的小细节:

泛型的使用:

①泛型类:

②⭐泛型接口:

③泛型方法:

泛型的通配符


泛型的基础知识:

♥A 泛型的好处:

  • 统一数据类型。
  • 把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常。

♠A 泛型擦除:

为什么java中的泛型是伪泛型❓

例如:把数据存入String类的一个集合里

- 编译器会进行泛型检查,如果不是String,你的代码下面会出现~~~(编译错误)

                                           ,如果是String类,强转为Object类存到集合里

- 将Object类转换为对应得数据类型

[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符_第1张图片


♣A 泛型的小细节:

  • 泛型中不能写基本数据类型
  • 指定泛型得具体类型后,可传入该类型得子类
  • 如果不写泛型,默认Object

 

泛型的使用:

①泛型类:

如果定义一个类时,类型不确定,可以定义为泛型

[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符_第2张图片

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){……}
}

③泛型方法:

当类中只有一个方法的类型不确定时,可使用泛型方法

[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符_第3张图片

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);
        }    
    }
}

泛型的通配符

泛型不具备继承性!!!

[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符_第4张图片

本方法不确定类型,但是只想要继承结构里面的对象!!!

? extends E 

表示可以传递E和E的子类

? super E

表示可以传递E和E的父类

public static void method(ArrayList e){……}

public static void method(ArrayList e)(……)

总结:

泛型提供了编译时类型检查,避免了在运行时出现类型转换错误。这确保了代码的类型安全性,并在编译时捕获错误。

通配符可以使用上限和下限来限制泛型的范围。表示类型是T或T的子类,表示类型是T或T的父类。

Java中的泛型在编译后会被擦除

你可能感兴趣的:(Java开发基础,java,开发语言)