我最近在代码中玩了一些新的Java 7功能,我必须用Java 6编译。
显然,当使用旧的jdk构建Java 7代码时,我会收到编译错误。
在C#中,我只使用预处理器来定义版本条件,并将关键代码括在#if子句中。
Java的方法是什么?
答案 0 :(得分:3)
一般来说,这是不可能的。 您可以为javac(-target)或通过ant / maven / gradle包装器设置目标版本。 但是,这仅适用于与较低版本兼容的功能。 您还需要一个您希望源代码可以读取的版本的javac。
简短的回答是:不。
答案 1 :(得分:1)
理论上,您可以设置-source
和-target
并使它们与众不同。然而,这种方式的唯一组合是veraions 1.1
和1.0
。在所有其他情况下,您需要为源和目标使用相同版本的java。
如果必须使用Java 6,我建议您使用该编译器,因为库也需要适用于该版本,或者您可以方便地使用仅存在于Java 7中的库或方法。(有些实用程序可以编译分为旧版本,但他们无法检查这个)
BTW:Java 6即将结束免费支持,Java 6更新35可能是最后一个免费版本。也许是时候考虑Java 7了。