zoukankan      html  css  js  c++  java
  • java泛型

    泛型是参数化的类型,作用主要是可以进行编译时检查和避免类型转换。

    如谓参数化类型,如:List<T>,这个“T”就可以代表任何引用类型,如:Integer,Boolean....

    如谓编译时检查:如List<Integer>  list,如何往list中Add一个字符串,那么编译器就会报错。

    如谓类型转换:如Integer i=list.get(x)时,这个list.get(x)直接返回Integer,不用在手动进行类型转换。

    有了泛型后,官方推荐使用泛型编程。

    除了List<T>这个早期就知道是哪个类型的场景外,在有的时候,List中的类型早期是不知道的,这种情况我就可以使用通配符”?”代替,表明这是一个未知类型

    如:List<?> list, 这样申明后,list可以传入从任何的引用类型,但这也带来了一定的局限,由于?代表任何类型,换句话说,JVM不知道?是什么类型,因此,这个带?的泛型只能进行类型无关的操作,如读取list的大小等。

    除了通配符“?”,泛型也提供了对泛型类型的限定符,如 extends 代表泛型的上限,supper代表泛型的下限,这两个用来约束泛型类型的范围

    如上这些,都是编译期的语法糖,在java代表被编译后,泛型类型会被擦除掉,对JVM来说,最终类型都是一样的,如List<Integer>与List<Boolean>的类的相同的,事实上,List里的数据类型都是Object,但对于存在上限限定的场景,如List<? extends String>,则list中的数据类型为String,即上限限定的类型。

  • 相关阅读:
    阿里图标库引用简介---20200608更新
    2.10排序算法
    2.9Node节点的学习
    2.8DOM节点的学习
    2.5数组
    2.6对象和函数
    2.7变量、内存、Math和Date的初级认识
    css优先级问题
    事件委托(事件代理)初认识
    静态页面学习随笔(1)-如何正确布局大体结构
  • 原文地址:https://www.cnblogs.com/movemoon/p/11199715.html
Copyright © 2011-2022 走看看