网上最全的泛型总结

为什么使用泛型

在这里插入图片描述

变量声明的类型必须匹配传递给实际对象的类型

在这里插入图片描述
Integer是Number的子类,初学者一看好像没什么问题,但是实际上是错的,变量声明的类型必须匹配传递给实际对象的类型,也就是,你前面声明了List 集合中接收Number的类型,后面实例化集合也必须是Number类型

List <Number> numbers = new ArrayList<Number>;

后面实例化类型的Number也可省略,也就是

List <Number> numbers = new ArrayList<>;

泛型作为方法参数

定义一个抽象类Goods
在这里插入图片描述
定义一个Books类继承Goods类
在这里插入图片描述
定义一个Clothes类继承Goods类
在这里插入图片描述

定义一个Shoes类继承Goods类
在这里插入图片描述
最后定义一个GoodsSeller实现一个sellGoods方法,里面传入的是商品的集合。遍历集合中的每个对象,调用sell方法。
在这里插入图片描述

List<? extends Goods>这种就是Goods以及Goods的子类可作为泛型的参数类型
在这里插入图片描述

测试类
在这里插入图片描述
重点看最后一句

GoodsSeller goodsSeller =new GoodsSeller();
		goodsSeller.sellGoods(booksList);

我传入的是booksList这个集合,泛型是Books是Goods的子类。

最后还有一点
在这里插入图片描述
List<? super Goods>这种就是Goods以及Goods的超类可作为泛型的参数类型

自定义简单泛型类

只传入一个泛型
在这里插入图片描述
实例化intNum这个对象的时候,泛型类为Interger所以通过intNum这个对象调用setNum方法只能传入Interger类型的数据。

传入两个泛型
在这里插入图片描述

自定义简单泛型方法

在这里插入图片描述

注意。这里《T》一定要写在,访问修饰符publice和返回类型void中间

在这里插入图片描述

这里后面加上了extends Number。传入的hello就报错了。因为只能传入Number的子类,而hello是String类型。并不是Nmuber的子类。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值