是否可以选择加入Java7API?

是否可以选择加入Java7API?,java,java-7,Java,Java 7,可能重复: 我有一个Java应用程序(实际上它是一个Scala应用程序,但我认为这不会有太大变化),运行在JVM6上 我想使用一些新的Java7API,比如它们是否可用,但如果它们不可用,则可以使用其他实现。目标是尽可能使用Java7API,同时保持与Java6的兼容性,并使用相同的二进制文件(jar) 应该可以通过检查Class.forName(“java.nio.file.attribute.BasicFileAttributeView”)来实现,但我不知道如何确定java类文件是否有不同

可能重复:

我有一个Java应用程序(实际上它是一个Scala应用程序,但我认为这不会有太大变化),运行在JVM6上

我想使用一些新的Java7API,比如它们是否可用,但如果它们不可用,则可以使用其他实现。目标是尽可能使用Java7API,同时保持与Java6的兼容性,并使用相同的二进制文件(jar)


应该可以通过检查
Class.forName(“java.nio.file.attribute.BasicFileAttributeView”)
来实现,但我不知道如何确定java类文件是否有不同的版本,这使得在Java 6中也可以运行的代码中不可能使用Java 7类。

一种方法是使用接口对应用程序逻辑进行编码。将实现捆绑在两个不同的JAR中—一个包含基于JDK6的实现,另一个包含JDK7实现。在运行时,使用System.getProperty(“java.version”)获取java版本,并实例化适当的实现(或者可以使用策略模式来设置适当的策略)。

如果采用这种方法,则必须广泛使用反射。否则,代码将无法在JDK上编译,这听起来很混乱。也许将依赖Java-7的代码放在一个单独的jar文件中,并拥有该jar文件的两个版本,决定在运行时实际加载哪一个(工厂模式)?@dogbane我认为你是对的。