Java集合进阶|泛型

泛型

  • 没有泛型时,集合也可以添加元素,但是多态的弊端是不能访问子类的特有功能(需强转,但是强转可以出错)
  • 泛型的好处是统一了数据类型,把运行时的问题提前到了编译期间,避免强制类型转换出现的异常
  • 泛型扩展:Java中的泛型是伪泛型,java文件编译成为字节码文件时class时,又擦除了泛型
  • 泛型不能写基本数据类型

1. 泛型可以在很多地方定义

  • 泛型类:当一个类中,某个变量的数据类型不确定时,可以用泛型类比如public class ArrayList<E>
public class MyArrayList<E>{
    Object[]obj =  new Object[10];
    int size = 10;
    public boolean add(E e){
    obj[size] = e;
    size++;
}

}
  • 泛型方法:直接定义在方法上的泛型,比如public <E> static void addall(ArrayList<E>list,E...e)
  • 泛型接口:实现类延续泛型,创建实现类对象时再确定类型

2. 泛型的继承和通配符

  • 泛型不具备继承性,但是数据具备继承性;泛型里面写的是什么数据类型,那么只能传递什么数据类型
  • 利用泛型方法的弊端:可以接受任意数据类型的数据;有时需要限制传递的类型,就可以使用泛型通配符
    public static void method(ArrayList<?extends E>list){}
    //extend表示可以传递E或者E的所有子类类型
    //super表示可以传递E或者E的所有父类类型
    //应用场景:类型不确定,只能传递某个继承体系中的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值