• 关于<? extends Class>和<T extends Class>的区别


    通配符

    >在Java中通配符用?表示。
    >在不确定泛型参数的具体类型时,可以使用?代替,
    >比如public  void set(List list)
    >在调用方法时,参数既可以是List也可以是List
    
    • 1
    • 2
    • 3
    • 4

    边界

    表示上边界限定,泛型参数只能是Number及其子类,一旦实例化其他参数类型则会报错
    表示下边界限定,泛型参数只能是Number和它的父类。
    
    • 1
    • 2

    除此之外,我们发现其实在使用< T extends Number >也是有效的,也是限定参数类型T只能是Number及其子类。那么他们之间的区别是什么呢?

    T是用于泛型类和泛型方法中的定义,比如

    //泛型类
    class Demo1{
    	......
    }
    //泛型方法
    public  void set(T x) {
    	......
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    ?是用于类的声明或者是参数,比如

    public class GenericsTest {
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    	ArrayList str ;//在声明类时使用,不清楚泛型的类型,可用?表示,再用具体的类型实例化
    	str = new ArrayList();
    	//str = new ArrayList();
    	
    	GenericsTest a = new GenericsTest();
    	List list = new ArrayList();
    	a.set(list);//在调用参数时直接使用具体的实参
    	}
    	public  void set(List list) {//在定义时泛型参数不确定使用?表示
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    开源相机管理库Aravis学习(一)——安装
    Spring WebFlux简单使用
    H3C LC-5120-52SC-HI配置管理IP
    力扣-路径总和问题
    DDD领域驱动设计-聚合
    C++多态【下】
    SSM+垃圾分类小助手 毕业设计-附源码191356
    2000-2018年286个地级市PM2.5数据
    Excel的窗口如何冻结与拆分?
    mysql 高级(进阶学习)
  • 原文地址:https://blog.csdn.net/weixin_44371237/article/details/133181933