java - Java Factory 类是否可以构造为根据 JVM 版本实例化 Java 6 或 Java 7 特定类?

标签 java java-7

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/

相关文章:

java - 使用自动安装 JDK 在 Windows 7 上安装和配置 Jenkins

java - Arraylists 的显式规范

jboss7.x - 使用 JDK 7 构建的项目的 JBoss AS 7 部署失败

java - 带有 MS SQL Server 驱动程序和 Tomcat 的 Spring Boot

java - 如何在Java中的所有线程中维护List的单个副本

java - 使用 Spock 的 Groovy 模拟文件工厂

java-7 - Java 7 中的类型错误

java - 将 JSP 部署到用户,如 setup.exe 或 .dmg 文件

java - 如何在android中将 float 四舍五入到一位数字?

java - 如何使用 JNLP 下载 Java 7?