Tho*_*sen 11 java eclipse compiler-construction
我希望有一个源文件可以编译,javac/ecj设置为Java 5但不是Java 6(即使底层Java运行时是Java 6).
这可以肯定在安装了Java 6的Eclipse 3.5中正确设置了编译器级别,但结果需要在Java 5安装上运行.
对于java 1.4,我可以使用"enum"作为变量名称(在Java 5及更高版本中失败)但我无法找到类似于Java 5与6(及更高版本)的方法.
建议?
oxb*_*kes 14
有没有在Java语言中是去除 JDK5和6向其中加入,我们已说过的唯一的事情之间,被@Override
标注为接口方法上允许的-没有关键字.因此,我担心库存差异是导致改变的唯一原因.
即使在核心API中也存在这些; 在一个不寻常的向后兼容性破坏狂欢中,他们改变了ExecutorService
界面上某些方法的签名.这是因为这些方法的通用签名过于严格.这是一个纯粹的库更改(虽然,它是java.util
一个非常核心的库的一部分); 与任何语言级别的修改无关.
例如,来自JDK5:
<T> T invokeAny(Collection<Callable<T>> tasks)
Run Code Online (Sandbox Code Playgroud)
<T> T invokeAny(Collection<? extends Callable<T>> tasks)
Run Code Online (Sandbox Code Playgroud)
这意味着任何包含在JDK5中实现此接口的代码的程序都不会针对JDK6进行编译.一个片段很容易创建; 让你的IDE创建一个JDK5接口的空实现,然后针对JDK6构建.
注意:添加了通配符是因为之前的版本不会接受类似的参数List<MyCallable<String>>
(即集合由某些可调用的子类类型化),而后一版本则可以.
归档时间: |
|
查看次数: |
499 次 |
最近记录: |