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

🌈键盘敲烂,年薪30万🌈

目录

泛型的基础知识:

♥A 泛型的好处:

♠A 泛型擦除:

♣A 泛型的小细节:

泛型的使用:

①泛型类:

②⭐泛型接口:

③泛型方法:

泛型的通配符


泛型的基础知识:

♥A 泛型的好处:

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

♠A 泛型擦除:

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

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

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

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

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


♣A 泛型的小细节:

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

 

泛型的使用:

①泛型类:

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

public class MyArrayList<E>{
    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<Integer> list = new MyArrayList();
        list.add(1);
    }
}

②⭐泛型接口:

  • 实现类指定类型
public class MyList Implements List<String>{
    // 重写List的所有抽象方法
    public void add(String e){……}
}
  • 实现类继续沿用泛型
public class MyList<E> Implements List<E>{
    public void add(E e){……}
}

③泛型方法:

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

public class Demo1{
    public static void main(String[] args){
        MyArrayList<Integer> list = new MyArrayList();
        ListUtil.addAll(list, 1, 2, 3);
    }
    class ListUtil{
        public static<E> void addAll(ArrayList<E> 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中的泛型在编译后会被擦除

  • 100
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 93
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 93
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会就选C.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值