【Java成神之路】Java 的泛型是如何工作的 ? 什么是类型擦除 ?

2022-03-07 11:22:28  晓掌柜  版权声明:本文为站长原创文章,转载请写明出处


一、释义

    泛型是Java SE 1.5之后的特性, 《Java 核心技术》中对泛型的定义是:

        “泛型” 意味着编写的代码可以被不同类型的对象所重用。

    “泛型”,顾名思义,“泛指的类型”。我们提供了泛指的概念,但具体执行的时候却可以有具体的规则来约束,比如我们用的非常多的ArrayList就是个泛型类,ArrayList作为集合可以存放各种元素,如Integer, String,自定义的各种类型等,但在我们使用的时候通过具体的规则来约束,如我们可以约束集合中只存放Integer类型的元素,如

    List<Integer> iniData = new ArrayList<>()

二、工作及类型擦除

    Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类型在编译后都会被清除掉。

三、使用泛型的好处

    以集合来举例,使用泛型的好处是我们不必因为添加元素类型的不同而定义不同类型的集合,如整型集合类,浮点型集合类,字符串集合类,我们可以定义一个集合来存放整型、浮点型,字符串型数据,而这并不是最重要的,因为我们只要把底层存储设置了Object即可,添加的数据全部都可向上转型为Object。 更重要的是我们可以通过规则按照自己的想法控制存储的数据类型。

四、限定通配符和非限定通配符

    限定通配符包括两种:

        1. 表示类型的上界,格式为:<? extends T>,即类型必须为T类型或者T子类
        2. 表示类型的下界,格式为:<? super T>,即类型必须为T类型或者T的父类
    非限定通配符:类型为<T>,可以用任意类型来替代。



最新评论: