0

我最近在必须用 Java 6 编译的代码中尝试了一些新的 Java 7 特性。

显然,在使用旧 jdk 构建 Java 7 代码时,我会遇到编译错误。

在 C# 中,我将只使用预处理器来定义版本条件并将关键代码包含在 #if 子句中。

Java 的方法是什么?

4

2 回答 2

3

一般来说,这是不可能的。您可以为 javac (-target) 或通过 ant/maven/gradle 包装器设置目标版本。但是,这仅适用于与较低版本兼容的那些功能。您还需要一个您希望源代码读取的版本的 javac。

最简洁的答案是不。

于 2012-11-26T17:00:45.017 回答
1

从理论上讲,您可以设置-source并使-target它们不同。然而,唯一能以这种方式工作的组合是 veraions1.11.0. 在所有其他情况下,您需要相同版本的 java 用于源和目标。

如果您必须使用 Java 6,我建议您使用该编译器,因为库也需要适用于该版本,或者您可以随意使用仅存在于 Java 7 中的库或方法。(有一些实用程序可以将已编译的类转换为较旧的类版本,但他们无法检查)

顺便说一句:Java 6 即将结束免费支持,Java 6 更新 35 可能是最后一个免费版本。也许是时候考虑 Java 7 了。

于 2012-11-26T17:02:39.923 回答