关键词不能为空

当前您在: 主页 > 英语 >

修琳琳--JAVA中文翻译

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 00:22
tags:

-

2021年2月28日发(作者:salmon)


沈阳航空工业学院毕业设计(外文翻译)




JDK


早期版本中使用


Java 5


的语言特性



Java


5


添加了许多强大的语言特性:


泛型 、


枚举、


注释、


自动装箱和增强的


for


循环。但是,许多工作组仍然被绑定在


JDK 1.4


或以前的版本上,可能需要花些时


间才能使用新版本。


但是,


这些开发人员仍然可以使用这些功能强大的语言特性,



时在


JVM


早期版本上部署。在这一期


Java


理论与实践



中,


Brian


Goetz


将演示如


何在


JDK


早期版本中使用


Java 5


的语言特性。



随着最新的


Java 6.0


的发布,您可能认为


Java 5


的语言特性是



“旧的新特

< p>
性”。


但是即使在现在,


当我询问开发人员在开发 时使用的


Java


平台的版本时,



常只有一半人在使用


Java


5


——



另一半则只能表示羡慕。他们非常希望使用


Java


5


中添加的语言特性,例如泛型和注释,但仍有许多因素妨碍 他们这样做。



不能利用


Java


5


特性的开发人员包括那些开发组件、


库或应用程序框架的开发


人员。因为他们的客户可能仍然在使用


JDK


1.4


或以前的版本,并且


JDK


1.4


或以


前的


JVM


不能装载用


Java 5


编译的类,所以使用


Java 5


语言特性会把他们的客


户基数限制在已经迁移到


Java 5


的公司。



另一类经常避免使用


Java 5


的开发人员是使用


Java EE


的开发人员。许多开


发团队不愿在


Java


EE


1.4


及以前的版本上使用


Java


5< /p>


,因为担心其应用服务器的


厂商不支持


Java


5


。这些开发人员要迁移到


Java


EE


5


可能还有待时日。除了


Java


EE 5



Java SE 5


规范之间的滞后,商业


Java EE 5


容器没有必要在规范刚刚制


定好就能使用,


企业也没有 必要在应用服务器出现下一个版本时就立即升级,


而且在


升级应 用服务器之后,可能还需要花些时间在新平台上验证其应用程序。



Java 5


语言特性的实现



Java


5


中添加的语言特性



——



泛型、枚举、注释、自动装箱和增强的


for





——



不需要修改


JVM


的指令集,


几乎全部是在静态编译器



javac



和类库中实


现的。


当编译器遇到使用泛型的情况时,


会试图检查是否保证了类型安全

(如果不能


检查,会发出



“unchecked cast”),然后发出字节码,生成的字节码与等价的非


泛型代码、类型强制转换所生成的字节码相同。类似的,自动装箱和增强的

< br> for



环仅仅是等价的



“语法糖”,只是更复杂的语法和枚举被编译到普通的类中。




1


沈阳航空工业学院毕业设计(外文翻译)



在理论上,


可以采用


javac


生成的类文件,


在早期的


JVM < /p>


中装入它们,


这实际


上正是


JSR


14


(负责泛型的


Java


Community


Process


工作组)的成立目的。但是,


其他问题(例如注释的保持)迫使类文件的版本在


Java 1.4



Java 5


之间变化,


因此妨碍了早期


JVM


中装入用


Java 5


编译的代码。而且,在


Java 5


中添加的有


些语言特性依赖于


Java 5


库。如果用


javac -target 1.5


编译类,并试图将它装


入早期


JVM


中,就会得到


UnsupportedClassV ersionError


,因为


-target 1.5



项生成的类的类文件版本是


49


,而


JDK 1.4


只支持版最大为


48


的类文件版本。



for-each


循环



增强的


for


循环有时叫做


for-each

< br>循环,编译器编译它的时候,情形与程序


员提供旧式


for


循环一样。


for-each


循环能够迭代数组或集合中的元素。


清单


1



示了用


for-each


在集合上迭代的语法:



清单


1. for-each


循环



Collection fooCollection = ...


for (Foo f : fooCollection) {


doSomething(f);


}


编译器把这个代码转换成等价的基于迭代器的循环,如清单


2


所示:



清单


2.


清单


1


基于迭代器的等价循环



for (Iterator iter=or(); t();) {


Foo f = ();


doSomething(f);


}


编译器如何知道提供的参数有一个


iterator()


方法呢?


javac


编译器的设计


者可能已经内置了对集合框架的理解,


但是这种方法有些不必要的限制。


所以,


创建

< br>了一个新的接口


le


(请参阅清单


3


),并翻新集合类使其实现




2


沈阳航空工业学院毕业设计(外文翻译)



Iterable


接口。


这样,


不是在核心集合框架上构建的容器类也能利用新的


for- each


循环。


但是这样做会形成对


Java


5


类库的依赖,


因为在


JDK


1.4


中没有


Iterable




清单


3. Iterable


接口



public interface Iterable {


Iterator iterator();


}


枚举和自动装箱



正像


for-each


循环一样,


枚举也要求来自类库的支持。


当编译器遇到枚举类型

< p>
时,


生成的类将扩展库类




但是,



Iterable


一样,



JDK


1.4



库中也没有


Enum


类。



类似的,

自动装箱依赖于添加到原始包装器类


(例如


Integer




valueOf()



法。当装箱需要从


int


转换到


Integer


时,编译器并不调用


new Integer(int)



而是生成对


f(int)


的调用。


valueOf()


方法的实现利用



享元



flyweight



模式



为常用的整数值缓存


Integer


对象



Java


6


的实现缓存从


-128



127


的整数)



由于消除了冗余的实例化,


可能会提高性能。


而且,


就像


Iterable



Enum


一样,


valueOf()


方法在


JDK 1.4


类库中也不存在。



变长参数



当编译器遇到用变长参数列 表定义的方法时,


会把其转换成包含正确组件类型数


组的方法; 当编译器遇到带有变长参数列表方法的调用时,就把参数装进数组。



注释



定义了注释的之后,


可以用


@Retention


对它进行注释,


它可以决定编译器对使


用这个注释的类、


方法或字段执行什么处理。

< br>已经定义的保持策略有


SOURCE


(在编


译时舍弃注释数据)、


CLASS


(在类文件中记录注释)或


RUNTIME


(在类文件中记


录注释,并在运行时保留注释,这样就可以反射地访问它们了) 。



其他的库依赖关系




3

-


-


-


-


-


-


-


-



本文更新与2021-02-28 00:22,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/677078.html

修琳琳--JAVA中文翻译的相关文章