java - 如何在 Java 中针对较低的语言级别

标签 java maven lambda java-8

我维护一个 Java tutorial application用 Java 编写,演示了 Java 6、7 和 8 的功能。每个教程屏幕都根据需要由 Class.forName 动态加载。 Java 7 类需要使用 Java 7 构造,而 Java 8 类需要使用 Lambdas 和 Date/Time API。

我希望这三种语言级别的用户都可以访问它,只是如果他们使用 Java 6,我们不会加载 Java 7 或 8 类,如果使用 Java 7,我们不会加载 Java 8 节课。

我们将动态确定运行时级别并忽略更高级别,仅通过 Class.forName() 加载相关类。显然,使用 Java 6 或 7 的用户将无法执行带有魔数(Magic Number) 8 的代码。因此我想在构建中以较早的 Java 版本为目标。

换句话说,我想将源设置为 1.8,将目标设置为 1.6

但是 Maven(和 Javac)阻止我指定低于源的目标。

还有其他办法吗?

我过去曾使用适用于 Android 的 JavaFX 代码完成过此操作,在那里我能够使用 Lambdas 构建 JavaFX 8 代码,然后将其部署到当前的 Android 版本。但在那种情况下,有一个特殊的 SDK 可以处理 lambda 并构建到 Java 7。

有没有办法用标准的 Java 8 做到这一点?

最佳答案

您唯一的选择是 -source 1.1 -target 1.0 在所有其他情况下,它们必须相同

您需要为每个版本构建一个 jar,然后将它们组合在一起。

关于java - 如何在 Java 中针对较低的语言级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26147712/

相关文章:

java - 在方法 : exception in compilation: complaining about type :cannont convert to 中使用泛型

java - Android从选定的单选按钮获取值(value)

java - mvnw 权限在 travis 构建期间被拒绝错误

python-3.x - 如何按姓氏对姓名进行排序

java - 用标签替换每个单词

java - maven - spring 项目构建配置文件

java - Logback 找不到 logback.xml,即使它存在(在类路径上)

python - Python Lambda 函数的空参数

python - 检查字符串数据帧python中的任何位置是否存在 '?'

JavaFx 在场景打开时设置标签文本