Java基础-泛型通配符

文章讨论了Java中泛型存在的问题,即无法严格限制接收的类型。为解决此问题,引入了泛型通配符,如?extendsT用于限制参数为T或其子类型,?superT限制为T或其父类型。通过示例展示了如何使用通配符限制列表元素的类型,并阐述了其在类型不确定但需限定范围时的应用场景。
摘要由CSDN通过智能技术生成

泛型存在这一些弊端:
例如A,B,C存在着继承的关系,我们希望方法只接收传递这些类型,但在实际开发中,泛型方法是可以做到接收任意的数据类型

所以这里引出泛型通配符的概念

泛型类型的限制:通配符可以限制泛型类型的范围。
例如:
使用通配符? extendsT可以限制泛型类型参数必须是T类型或其子类型
使用通配符? super T可以限制泛型类型参数必须是T类型或其父类型

此时是可以添加任意类型

public class demo5 {
    public static void main(String[] args) {
        ArrayList<ye> ye = new ArrayList<>();
        ArrayList<fu> fu = new ArrayList<>();
        ArrayList<zi> zi = new ArrayList<>();

        ArrayList<student> students = new ArrayList<>();

        method(ye);
        method(fu);
        method(zi);
        method(students);
    }

    public static void method(ArrayList<?> list){}
}
class ye{}
class fu extends ye{}
class zi extends fu{}
class student{}

此时只可以添加ye类型以及它的子类

public static void method(ArrayList<? extends ye> list){}

此时只可以添加zi类型以及它的父类

public static void method(ArrayList<? super zi> list){}

应用场景:

  1. 如果我们在定义类、方法、接口的时候,如果类型不确定,就可以定义泛型类、泛型方法、泛型接口
  2. 如果类型不确定,但是能知道以后只能传递某个继承体系中的,就可以泛型的通配符

泛型的通配符;

关键点:可以限定类型的范围

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值