Java类型通配符应用举例分析-创新互联

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

创新互联建站网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为成都做网站、网站制作、成都外贸网站建设app软件开发公司以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。创新互联建站深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

一 点睛

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://bzwzjz.com/article/gsiii.html