Java8新特性探究-泛型的目标类型推断.doc

Java8新特性探究-泛型的目标类型推断.doc

ID:50676386

大小:34.52 KB

页数:2页

时间:2020-03-13

Java8新特性探究-泛型的目标类型推断.doc_第1页
Java8新特性探究-泛型的目标类型推断.doc_第2页
资源描述:

《Java8新特性探究-泛型的目标类型推断.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Java8新特性探究(6):泛型的目标类型推断以下是JEP101的特性内容了,Java作为静态语言的代表者,可以说类型系统相当丰富。导致类型间互相转换的问题困扰着每个java程序员,通过编译器自动推断类型的东西可以稍微缓解一下类型转换太复杂的问题。AD:简单理解泛型泛型是JavaSE1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。通俗点将就是类型的变量。这种类型变量可以用在类、接口和方法的创建中。理解Java泛型最简单的方法是把它看成一种便捷语法,能节省你某些Java类型转换

2、(casting)上的操作:ListApplebox=newArrayListApplebox.add(newApple());Appleapple=box.get(0);上面的代码自身已表达的很清楚:box是一个装有Apple对象的List。get方法返回一个Apple对象实例,这个过程不需要进行类型转换。没有泛型,上面的代码需要写成这样:Appleapple=(Apple)box.get(0);泛型的尴尬泛型的最大优点是提供了程序的类型安全同时可以向后兼容,但也有尴尬的地方,就是每次定义时都要写明泛型的类

3、型,这样显示指定不仅感觉有些冗长,最主要是很多程序员不熟悉泛型,因此很多时候不能够给出正确的类型参数,现在通过编译器自动推断泛型的参数类型,能够减少这样的情况,并提高代码可读性。java7的泛型类型推断改进在以前的版本中使用泛型类型,需要在声明并赋值的时候,两侧都加上泛型类型。例如:MapString,StringmyMap=newHashMapString,String你可能觉得:老子在声明变量的的时候已经指明了参数类型,为毛还要在初始化对象时再指定?幸好,在JavaSE7中,这种方式得以改进,现在你可以使

4、用如下语句进行声明并赋值:MapString,StringmyMap=newHashMap();注意后面的在这条语句中,编译器会根据变量声明时的泛型类型自动推断出实例化HashMap时的泛型类型。再次提醒一定要注意newHashMap后面的,只有加上这个才表示是自动类型推断,否则就是非泛型类型的HashMap,并且在使用编译器编译源代码时会给出一个警告提示。但是:JavaSE7在创建泛型实高山美人茶eupai.net例时的类型推断是有限制的:只有构造器的参数化类型在上下文中被显著的声明了,才可以使用类型推断,

5、否则不行。例如:下面的例子在java7无法正确编译(但现在在java8里面可以编译,因为根据方法参数来自动推断泛型的类型):ListStringlist=newArrayList();list.add(A);由于addAll期望获得Collection?extendsString类型的参数,因此下面的语句无法通过list.addAll(newArrayList());Java8的泛型类型推断改进java8里面泛型的目标类型推断主要2个:1.支持通过方法上下文推断泛型目标类型2.支持在方法调用链路当中,泛型类型

6、推断传递到最后一个方法让我们看看官网的例子classListE{staticZListZnil(){...};staticZListZcons(Zhead,ListZtail){...};Ehead(){...}}根据JEP101的特性,我们在调用上面方法的时候可以这样写通过方法赋值的目标参数来自动玛瑙mnwg.net推断泛型的类型ListStringl=List.nil();而不是显示的指定类型ListStringl=List.Stringnil();通过前面方法参数类型推断泛型的类型List.cons(4

7、2,List.nil());而不是显示的指定类型List.cons(42,List.Integernil());以上是JEP101的特性内容了,Java作为静态语言的代表者,可以说类型系统相当丰富。导致类型间互相转换的问题困扰着每个java程序员,通过编译器自动推断类型的东西可以稍微缓解一下类型转换太复杂的问题。虽然说是小进步,但对于我们天天写代码的程序员,肯定能带来巨大的作用,至少心情更愉悦了~~说不定在java9里面,我们会得到一个通用的类型var,像js或者scala的一些动态语言那样^_^原文链接:b

8、enhaileblog184390【编辑推荐】网络工程师教程(第2版)本书是全国计算机技术与软件专业技术资格(水平)考试的指定用书。按照新的网络工程师考试大纲的规定,本书包含了数据通信基础知

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。