簡體   English   中英

編寫一個 Java8 庫,如果在 Java9 或更高版本中運行,它可以使用 java9 的特性

[英]Write a Java8 library which can use java9 features if running in Java9 or greater

我想寫一個 java8 庫,我必須用 java8 編譯它,因為它使用了一個 ByteBuffer,它有一些討厭的方法簽名更改(然后拋出臭名昭著的錯誤“找不到方法”)。

然而,新的 Java 版本有一些不錯的功能,如果這些功能在運行時可用,我想使用它們。 例如,較新版本的 Java 具有 Inflater.setValue(ByteBuffer) 和 Arrays.compareUnsigned,它們允許應用程序根據我所做的基准運行得更快。

考慮到我必須使用 JDK8 構建項目,如果可用,我如何安排 gradle 項目來使用這些功能?

我正在考慮創建 2 個不同的庫,一個名為 -jdk8,第二個帶有后綴 jdk9,但我想避免過多的重復代碼。

最佳做法是什么?

謝謝你。

不要與不同的 Java 版本交叉。 事情往往會 go 失控並且有很多意想不到的行為,通常它們甚至無法編譯。

在此處輸入圖像描述

如果你真的想做這樣的事情,你需要開始研究微服務架構來為你提供這種靈活性。

自 Java 9 以來,有可能創建一個多版本 jar。例如,在您的庫中,您可以將不同的實現放入src/main/javasrc/main/java9中。 這樣您就不必為不同的目標 java 版本創建庫的多個項目。 當然,您必須使用 JDK 9 編譯該庫,但是使用您的庫的項目應該使用 JDK 8 構建,因為該庫包含它的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM