我制作了一些实用程序,可以在我正在制作的几个应用程序中使用。大多数应用程序支持source 1.7,但其中一些不支持(例如,Android应用程序)。
ArrayList<String> list = new ArrayList<>();
String s = "hi";
switch (s) {
case "hi":
例如,在1.7以下的Java版本中不支持菱形操作符和字符串切换。
当我构建Eclipse或Netbeans项目时,我希望源代码被转换为与低于1.7的源代码兼容。
我能做到吗?如果是,怎么做?如果不是,那我该怎么做呢?手动替换所有源代码到1.6兼容?
这是不可能的。
你可以交叉编译,但是:
https://blogs.oracle.com/abuckley/entry/versioning_in_the_java_platformjavac不接受低于的目标(或编译策略)配置为接受的源语言。
这篇文章是2009年的,但是我怀疑Java SE 7是否改变了这一点。
解决方案:使用您想要支持的最小Java版本的语法(源代码)。
使用持续集成服务器,如Jenkins,并为你想要支持的每个JDK配置一个Job(不需要交叉编译,因为你使用了一些旧Java版本中不可用的api,可能会编译但在运行时失败)
还注意:Oracle的Java SE 6已经到了生命周期结束,建议在大多数情况下更新到Java SE 7(例如,当您没有与Oracle签订支持合同时)。
我能做到吗?
理论上可以。
如果是,如何处理?
使用Java 7 -> Java 6源代码转换器。但是,我从来没有听说过有这样的翻译……
如果不是,那么我该怎么做呢?手动替换所有源代码到1.6兼容?
这是最实用的方法,除非你能找到一个别人已经实现的翻译器。