新睿云

> 知识库 > 泛型是什么?它的由来以及使用方法

泛型是什么?它的由来以及使用方法

作者/来源:新睿云 发布时间:2019-11-13

java泛型特性的了解,很多时候是从集合对象接触到的,今天新睿云小编带大家一起去深入的了解泛型的缘由和使用方式!


泛型


01、泛型的由来

小编想告诉大家的是:泛型的产生本质是来源于软件设计!

在软件设计的过程中经常会用到容器类,容器类代码都一样只是数据类型不同,如果能够让一种类型容纳所有类型,就可以实现代码重用,但是没有一种类型可以容纳所有类型,为了解决容器的问题,由此就产生了泛型设计。


由此可见,泛型是一个不确定的参数类型,即“参数化类型”!

泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。

那么怎么使用泛型,进行软件设计呢?


02、使用方式

泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法

相关推荐文章《DB是什么文件?它可以删除吗


2.1、泛型类

泛型类型用于类的定义中,典型的就是各种容器类,如:List、Set、Map。

最普通的自定义泛型类

  1. /**

  2. * 此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型

  3. * 在实例化泛型类时,必须指定T的具体类型

  4. */

  5. public class Generic<T>{

  6. /**key这个成员变量的类型为T,T的类型由外部指定*/

  7. private T key;


  8. /**泛型构造方法形参key的类型也为T,T的类型由外部指定*/

  9. public Generic(T key) {

  10. this.key = key;

  11. }


  12. /**泛型方法getKey的返回值类型为T,T的类型由外部指定*/

  13. public T getKey(){

  14. return key;

  15. }

  16. }

传参方式

  1. //泛型的类型参数只能是类类型(包括自定义类),不能是简单类型

  2. //传入的实参类型需与泛型的类型参数类型相同,即为Integer.

  3. Generic<Integer> genericInteger = new Generic<Integer>(12345678);


  4. //传入的实参类型需与泛型的类型参数类型相同,即为String.

  5. Generic<String> genericString = new Generic<String>("hello");

  6. System.out.println("泛型测试","key is " + genericInteger.getKey());

  7. System.out.println("泛型测试","key is " + genericString.getKey());

输出结果

  1. 泛型测试: key is 12345678

  2. 泛型测试: key is hello

定义的泛型类,就一定要传入泛型类型实参么?

并不是这样,在使用泛型的时候如果传入泛型实参,则会根据传入的泛型实参做相应的限制,此时泛型才会起到本应起到的限制作用。如果不传入泛型类型实参的话,在泛型类中使用泛型的方法或成员变量定义的类型可以为任何的类型。

推荐相关应用:弹性公网IP   虚拟专网VPN


设计泛型的初衷,主要是为了解决Java容器无法记忆元素类型的问题,由于Java设计之初并不知道会往容器中存放什么类型的元素,因此元素类型都设定为Object,这样就什么东西都能放了!

热门标签
new year
在线咨询
咨询热线 400-0505-565
投诉与建议
{{item.description}}

—您的烦恼我们已经收到—

我们会将处理结果发送至您的手机

请耐心等待