这篇文章给大家介绍如何在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中定义和使用泛型