您好,欢迎来到99网。
搜索
您的当前位置:首页泛型的通配符extends和super的异同

泛型的通配符extends和super的异同

来源:99网

在Java泛型中,通配符extends和super是用来限定泛型类型的关键字,它们具有不同的作用和使用场景。以下是两者的异同点:

相同点

  • 都是泛型限定符:extends和super都是用于限定泛型类型的,使泛型代码更加灵活和强大。

不同点

  • 含义不同

    • extends:表示上界限定,用于限定泛型类型必须是某个类或其子类。在泛型类或泛型方法中使用extends,可以实现对泛型类型的继承限定。例如,List<? extends Number>表示该列表可以存放Number类型或其子类型的元素。
    • super:表示下界限定,用于限定泛型类型必须是某个类或其父类。在泛型类或泛型方法中使用super,可以实现对泛型类型的父类限定。例如,List<? super Integer>表示该列表可以存放Integer类型或其父类型的元素。
  • 使用场景不同

    • 消费者使用super:如果需要一个列表来存放T类型的元素(即想把T类型的元素加入到列表中),则需要把这个列表声明成<? super T>。然而,这种情况下不能保证从中读取到的元素的类型。
    • 生产者使用extends:如果需要一个列表来提供T类型的元素(即想从列表中读取T类型的元素),则需要把这个列表声明成<? extends T>。但这种情况下不能往该列表中添加任何元素,因为编译器无法确定具体的子类型。
  • 适用性不同

    • 下界<? super T>:不影响往里存元素,但往外取元素时只能放在Object对象里。因此,经常往里插入元素的场景,适合用下界super。
    • 上界<? extends T>:不能往里存元素,只能往外取元素。因此,频繁往外读取内容的场景,适合用上界extends。

示例说明

综上所述,泛型中的通配符extends和super在含义、使用场景和适用性方面存在显著的差异。了解这些差异有助于编写更加灵活和安全的泛型代码。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务