2012-01-06 53 views
3

可能重複:
Using Java 7 SDK features in Java 6是否可以選擇加入Java 7 API?

我有一個Java應用程序(實際上它是Scala的應用程序,但我不認爲這改變了),運行在JVM 6。

我想使用一些新的Java 7 APIs,如NIO2(如果它們可用),但如果它們不可用則回退到其他實現。目標是在可能的情況下使用Java 7 API,同時使用相同的二進制文件(jar)保持與Java 6的兼容性。

它應該可以通過檢查與Class.forName("java.nio.file.attribute.BasicFileAttributeView"),但我不知道如何如果例如, Java類文件具有不同的版本,這將使得不可能在也可在Java 6中運行的代碼中使用Java 7類。

+0

如果你採用這種方法,你將不得不廣泛使用反射。否則,代碼不會在JDK <7版本上編譯。 – Manish 2012-01-06 09:40:08

+0

聽起來很凌亂。也許把Java-7相關的代碼放在一個單獨的jar文件中,並有兩個版本的jar文件,決定在運行時實際加載哪一個(工廠模式)? – Thilo 2012-01-06 09:51:18

+0

@dogbane我認爲你是對的。 – dmeister 2012-01-06 10:54:31

回答

3

一種方式可以是 - 使用接口對應用程序邏輯進行編碼。將實現捆綁在兩個不同的jar中 - 一個包含基於JDK6的實現,另一個包含JDK7實現。在運行時,使用System.getProperty(「java.version」)獲取Java版本並實例化適當的實現(或者可以使用Strategy模式來設置適當的策略)。

相關問題