如何在Java中定义和使用泛型

  介绍

这篇文章给大家介绍如何在Java中定义和使用泛型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>一引入泛型背景

Java集合不会知道它们需要用它来保存什么类型的对象,所以他们把集合设计成能保存任何类型的对象,只要求具有很好的通用性。但这样做也带来两个问题:

<李>

集合对元素类型没有任何限制,这样可能引发一些问题:例如想创建一个只能保存狗对象的集合,但程序也可以轻易地将猫对象“丢”进去,所以可能引发异常。

<李>

由于把对象“丢进“集合时,集合丢失了对象的状态信息,集合只知道它盛装的是对象,因此取出集合元素后通常还需要进行强制类型转换。这种强制类型转换既会增加编程的复杂度,也可能引发ClassCastException。

<强>二不引入泛型的问题,编译时不检查类型的异常

<强> 1代码

import  java.util。*;   public  class  ListErr   {   public 才能;static  void  main (String [], args)   {才能   ,,//,创建一个只想保存字符串的列表集合   ,,List  strList =, new  ArrayList ();   ,,strList.add(“疯狂Java讲义“);   ,,strList.add(“疯狂Android讲义“);   ,,//,“不小心“把一个整数对象“丢进“了集合   ,,strList.add(5),,,,//一处   ,,strList.forEach (str →, System.out.println (((String str) . length ()));//, B处   ,,}   }

<强> 2运行

异常的线程“main"爪哇. 朗。ClassCastException: . lang。不能把整数以
8
,,,在ListErr.lambda主要0美元(ListErr.java: 14)
11
,,,java.util.ArrayList.forEach (ArrayList.java: 1257)
,,,ListErr.main (ListErr.java: 14)

<强> 3说明

程序在一处不小心把一个整数对象“丢进”了集列表合,这将导致程序在B处引发ClassCastException异常,因为程序试图把一个整数对象转换为字符串类型。

<强>三引入泛型实战

<强> 1代码

import  java.util。*;   public  class  GenericList   {   public 才能;static  void  main (String [], args)   {才能   ,,//,创建一个只想保存字符串的列表集合   ,,List ();,//①   ,,strList.add(“疯狂Java讲义“);   ,,strList.add(“疯狂Android讲义“);//,,,下面代码将引起编译错误   ,,//strList.add (5);,,//②   ,,strList.forEach (str →, System.out.println (str.length ())),,//③   ,,}   }

<强> 2运行

8
11

<强> 3说明

在集合中使用泛型后带来如下优势:

<李>

程序再也不能“不小心”把其他对象“丢进“strList集合中,编译器会提示编译告警;

<李>

程序更加简洁,集合自动记住所有集合元素的数据类型,从而无需对集合元素进行强制类型转换。

<强>四Java 7泛型的菱形语法实战

<强> 1代码

import  java.util。*;   public  class  DiamondTest   {   public 才能;static  void  main (String [], args)   {才能   ,,//,Java自动推断出ArrayList的& lt;祝辞里应该是字符串   ,,List   ,,Map祝辞,schoolsInfo =, new  HashMap<在();   ,,//,Java自动推断出ArrayList的& lt;祝辞里应该是字符串   ,,List类型   ,,schoolsInfo.forEach (key ,,值),→,System.out.println(时间+ key “——在“,+,值));   ,,}   }

<强> 2运行

8
11
孙悟空——祝辞(斜月三星洞,西天取经路)

关于如何在Java中定义和使用泛型就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

如何在Java中定义和使用泛型