Bootstrap

JAVA基础-----泛型

一、概述

1、什么是泛型?

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参列表,普通方法的形参列表中,每个形参的数据类型是确定的,而变量是一个参数。在调用普通方法时需要传入对应形参数据类型的变量(实参),若传入的实参与形参定义的数据类型不匹配,则会报错。

其实,泛型的本质是为了将类型参数化。 也就是说在泛型使用过程中,数据类型被设置为一个参数,在使用时再从外部传入一个数据类型;而一旦传入了具体的数据类型后,传入变量(实参)的数据类型如果不匹配,编译器就会直接报错。

所以,泛型指定了什么数据类型,就要存入什么类型的数据,否则就会报错。

2、底层逻辑:

底层是数组。把一种数据类型存到数组中。

形式:类<数据类型>

数据类型:V表示value;K表示key; E表示element; T表示type

3、总结:

(1)与使用 Object 对象代替一切引用数据类型对象这样简单粗暴方式相比,泛型使得数据类型的类别可以像参数一样由外部传递进来。它提供了一种扩展能力,更符合面向对象开发的软件编程宗旨。
(2)当具体的数据类型确定后,泛型又提供了一种类型安全检测机制,只有数据类型相匹配的变量才能正常的赋值,否则编译器就不通过。所以说,泛型一定程度上提高了软件的安全性,防止出现低级的失误。
(3)泛型提高了程序代码的可读性。在定义泛型阶段(类、接口、方法)或者对象实例化阶段,由于 < 类型参数 > 需要在代码中显式地编写,所以程序员能够快速猜测出代码所要操作的数据类型,提高了代码可读性。

泛型的三种使用方式:泛型类、泛型接口、泛型方法

二、泛型类

1、定义:

(1)类型参数用于类的定义中,则该类被称为泛型类。通过泛型可以完成对一组类的操作对外开放相同的接口。最典型的就是各种容器类,如:List、Set、Map等。

(2)泛型类中的静态方法和静态变量不可以使用泛型类所声明的类型参数

(3)静态泛型方法中可以使用自身的方法签名中新定义的类型参数(即泛型方法,后面会说到),而不能使用泛型类中定义的类型参数。

2、使用:

       在创建泛型类的对象时,必须指定类型参数 T 的具体数据类型,即尖括号 <> 中传入的什么数据类型,T 便会被替换成对应的类型。如果 <> 中什么都不传入,则默认是 < Object >。

3、使用泛型类的注意点:

(1)使用引用数据类型;

(2)指定泛型的具体的类型之后,可以传入该类型、或者其子类类型;

(3)如果不指定,则默认为Object。Object是所有类型的超类。List存储指定的数据类型。

使用泛型的上述特性便可以在集合中限制添加对象的数据类型,若集合中添加的对象与指定的泛型数据类型不一致,则编译器会直接报错,这也是泛型的类型安全检测机制的实现原理。


原文链接:https://blog.csdn.net/weixin_45395059/article/details/126006369

;