`
totoxian
  • 浏览: 1074807 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

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

阅读更多
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
分享到:
评论

相关推荐

    jdk1.4和jdk1.7版本

    4. **开关表达式(switch on String)**:允许在switch语句中使用String对象,而不仅仅是常量。 5. **改进的类型推断(Type Inference for Generic Instance Creation)**:如`List<String> list = new ArrayList()...

    jdk免安装版1.4、1.5、1.6、1.7

    Java Development Kit(简称JDK)是Oracle公司发布的用于开发和运行Java应用程序的工具包,它包含了Java编译器、Java虚拟机(JVM)、类库以及其他必要的开发工具。本资源集合提供了四个不同版本的JDK:1.4、1.5、1.6...

    java基础学习词汇

    泛型是Java5引入的新特性,它允许在类、接口和方法中使用类型参数,从而编写出更加灵活且类型安全的代码。泛型可以显著减少代码重复,并提高代码的可读性和可维护性。 #### Goto (跳转) 尽管Java不支持传统的`goto...

    java常用词汇汇总

    #### assert (关键字) 断言 [.'s.:t] (java1.4之后成为关键字) - **中文释义**:断言 - **用途**:`assert`关键字用于添加断言语句到程序中,主要用于调试目的。当表达式为假时,程序会抛出一个AssertionError。 #...

    java_编程常用英语单词_解释.pdf

    在Java中,使用Javac编译器将.java文件编译成.class文件,后者可以被Java虚拟机执行。 #### 21. Constant (常量, 常数, 恒量) - **拼音**: ['kɒnstәnt] - **解释**: “Constant”是指在程序执行过程中其值不会...

    java_编程常用英语单词_解释

    - **定义**:Assert 是一个关键字,用于在Java 1.4及更高版本中实现断言机制。断言是一种用于验证假设条件是否正确的编程技术。如果断言失败,则通常会抛出一个 `AssertionError` 异常。 #### Associate (关联, ...

    JDK1.7源码包

    - Java虚拟机(JVM)的工作原理,如类加载、内存管理、垃圾回收等。 - 类库的设计与实现,如集合框架、I/O、网络通信、多线程等。 - 错误与异常处理的内部机制。 - 对象模型的细节,如类、接口、方法、字段的定义与...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

Global site tag (gtag.js) - Google Analytics