想在Java 1.4的虚拟机中使用Generic?

Java5引入了七大新特性以提升编程效率,包括泛型、自动装箱/拆箱等,并且这些特性在源代码级别实现了与旧版本如Java1.4的向后兼容。通过特定配置,开发者能够利用Java5语法编写可在1.4虚拟机上运行的程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 5在语言方面增加了7个提高易用性的新特性, Joshua Bloch为了满足程序员们中" 直有不知手之舞之足之蹈之者"的需要,还改写了William Blake的 Tiger。但是为了保持向后兼容,除了annotation之外,其他6个特性,包括generic, autobox/unbox, loop enhancement, enum, static import和varags都只是在源代码级别的改进,编译出来的字节码都是一样的,这就提供了一种可能性,用Java 5的语法写出来的源程序,只要不使用annotation和enum(因为1.4中没有Enum抽象类),并且没有使用Java 5的新类库,就有可能被编译到1.4的虚拟机上运行。事实上,Sun JDK的javac编译器和Eclipse的java编译器确实都支持这种方式. Javac可以指定-target jsr14, 对于Eclipse 3.2,可以在项目的配置文件.setting\org.eclipse.jdt.core.prefs中加上一行org.eclipse.jdt.core.compiler.codegen.targetPlatform = 1.4即可。这个小tip可能对一些不得不在JRE1.4下运行程序的tx有用。请注意,这是一个非标准的选项,所以得不到官方的技术支持和稳定性方面的保证。不过Harmony项目由于暂时没有稳定的1.5版本虚拟机,在整个类库build system当中使用这个选项已经几个月了,还没有发现过问题。

有意思的是Eclipse开发人员对这个选项的态度,在Eclipse 3.2M5及以前的版本里面,这个选项是可以在Eclipse IDE的Preference里面设置的。后来IBM英国的同事发信给Eclipse开发组询问在如果在ant中运行Eclipse编译器如何设置这个选项,结果得到的回复竟然是他们认为这是个bug, 他们将在3.2 RC1开始禁用这个设置(如下图所示)。在绝望的以为将长期使用Eclipse3.2 M5之前,我们发现这个"bug"修改的并不彻底,在项目的配置文件中修改是一样有效的:D, 尽管Harmony快要有1.5的虚拟机用了,但还是希望所有看到这个帖子的tx不要把这个bug报告给Eclipse团队,至少我觉得这还是挺有用的;-)。

Eclipse snapshot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值