我維護用Java編寫的Java tutorial application,它演示了Java 6,7和8的功能。每個教程屏幕都根據需要由Class.forName動態加載。 Java 7類需要使用Java 7結構,Java 8類需要使用Lambda和Date/Time API。如何在Java中定位較低的語言級別
我希望這可以被所有這三種語言級別的用戶訪問,只是如果他們在Java 6上,我們不會加載Java 7或8類,如果在7上我們不會加載Java 8類。
我們將動態地確定運行時級別並忽略更高級別,只能通過Class.forName()加載相關的類。很顯然,使用Java 6或7的用戶將無法用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'在其他情況下,它們必須是相同的。 – 2014-10-01 18:16:18
您需要爲每個版本和另一個版本組合一個jar。 – 2014-10-01 18:18:01
:(我很害怕你會這麼說 – 2014-10-01 18:21:02