Java类型通配符应用举例分析

本篇内容主要讲解“Java类型通配符应用举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java类型通配符应用举例分析”吧!

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比东兴网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式东兴网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖东兴地区。费用合理售后完善,10多年实体公司更值得信赖。

一 点睛

List对象不能被当成List对象使用,也就是说:List类并不是List类的子类。

数组和泛型有所不同:假设Foo是Bar的一个子类型(子类或者子接口),那么Foo[]依然是Bar[]的子类型;但G不是G的子类型。

为了表示各种泛型List的父类,我们需要使用类型通配符,类型通配符是一个问号(?),将一个问号作为类型实参传给List集合,写作:List(意思是未知类型元素的List)。这个问号(?)被称为通配符,它的元素类型可以匹配任何类型。

二 泛型的优良设计

1 代码

import java.util.*;public class ArrayErr{  public static void main(String[] args)  {   // 定义一个Integer数组   Integer[] ia = new Integer[5];   // 可以把一个Integer[]数组赋给Number[]变量   Number[] na = ia;   // A 处   // 下面代码编译正常,但运行时会引发ArrayStoreException异常   // 因为0.5并不是Integer   na[0] = 0.5;  // B 处   List iList = new ArrayList<>();   // 下面代码导致编译错误   //List nList = iList; // C 处  }}

2 运行

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Double at ArrayErr.main(ArrayErr.java:23)

3 说明

A处的代码不会引起编译错误,但会在B处引发运行错误。

B出的代码直接引起编译错误。

这正是数组和泛型的区别,泛型的设计由于数组,能及早发现错误而不是到运行时才发现。

三 实战——使用类型通配符

1 代码

import java.util.*;public class ArrayErr{  public static void main(String[] args)  {   List c = new ArrayList();   c.add("第一个");   c.add("第二个");   test(c);   // 下面这种用法是错误的,这种类型通配不能加元素   List wrongList = new ArrayList();   //wrongList.add(new Object());  }  // 这种问号类型通配符表示各种泛型的父类,它的元素类型可以匹配任意类型,可以用到遍历中  public static void test(List c)  {   for(int i=0;i

2 运行

第一个第二个

3 说明

类型通配符可用于遍历场景,不可用于添加场景。

到此,相信大家对“Java类型通配符应用举例分析”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网站栏目:Java类型通配符应用举例分析
分享地址:http://ybzwz.com/article/jisdoc.html