Java 7 可以运行 Java 6 代码,但 Java 6 不能运行 Java 7 特定代码(例如 NIO 2.0)。我想支持使用任一 JVM 的用户,但为 Java 7 用户提供额外的功能。
是否可以使用接口(interface)构建带有 Java 6 的工厂类,以便它可以有条件地实例化 Java 6 编译类(如果 JVM 是 1.6)或 Java 7 编译类(如果 JVM 是 Java 7)?
例如像这样的东西:
String javaVersion = System.getProperty("java.version");
if (javaVersion.startsWith("1.6")) {
myInterface = Class.forName("com.project.java6.MyInterfaceImplementation").newInstance();
}
else {
myInterface = Class.forName("com.project.java7.MyInterfaceImplementation").newInstance();
}
如果是这样,是否需要将两个版本打包在不同的 jar 中,一个用于 Java 6 编译代码,另一个用于 Java 7 代码?
最佳答案
您可以这样做而不必担心版本问题。您甚至可以构建“Java 7”以在 Java 6 上运行,但不会工作,因为它需要不存在的类。也就是说,您可以拥有一个在 Java 6 中运行的 JAR。你也不需要使用反射。
关于java - Java Factory 类是否可以构造为根据 JVM 版本实例化 Java 6 或 Java 7 特定类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17477400/