重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这期内容当中小编将会给大家带来有关Java中如何定义和使用泛型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联专注于孟连企业网站建设,响应式网站设计,成都商城网站开发。孟连网站建设公司,为孟连等地区提供建站服务。全流程定制网站设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务一 引入泛型背景
Java集合不会知道它们需要用它来保存什么类型的对象,所以他们把集合设计成能保存任何类型的对象,只要求具有很好的通用性。但这样做也带来两个问题:
集合对元素类型没有任何限制,这样可能引发一些问题:例如想创建一个只能保存Dog对象的集合,但程序也可以轻易地将Cat对象“丢”进去,所以可能引发异常。 由于把对象“丢进”集合时,集合丢失了对象的状态信息,集合只知道它盛装的是Object,因此取出集合元素后通常还需要进行强制类型转换。这种强制类型转换既会增加编程的复杂度、也可能引发ClassCastException。
二 不引入泛型的问题——编译时不检查类型的异常
1 代码
import java.util.*;public class ListErr{ public static void main(String[] args) { // 创建一个只想保存字符串的List集合 List strList = new ArrayList(); strList.add("疯狂Java讲义"); strList.add("疯狂Android讲义"); // "不小心"把一个Integer对象"丢进"了集合 strList.add(5); // A处 strList.forEach(str -> System.out.println(((String)str).length())); // B处 }}
2 运行
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String8 at ListErr.lambda$main$0(ListErr.java:14)11 at java.util.ArrayList.forEach(ArrayList.java:1257) at ListErr.main(ListErr.java:14)
3 说明
程序在A处不小心把一个Integer对象“丢进”了List集合,这将导致程序在B处引发ClassCastException异常,因为程序试图把一个Integer对象转换为String类型。
三 引入泛型实战
1 代码
import java.util.*;public class GenericList{ public static void main(String[] args) { // 创建一个只想保存字符串的List集合 List
2 运行
811
3 说明
在集合中使用泛型后带来如下优势:
程序再也不能“不小心”把其他对象“丢进”strList集合中,编译器会提示编译告警; 程序更加简洁,集合自动记住所有集合元素的数据类型,从而无需对集合元素进行强制类型转换。
四 Java 7 泛型的菱形语法实战
1 代码
import java.util.*;public class DiamondTest{ public static void main(String[] args) { // Java自动推断出ArrayList的<>里应该是String List
2 运行
811孙悟空-->[斜月三星洞, 西天取经路]
上述就是小编为大家分享的Java中如何定义和使用泛型了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。