天天看點

kotlin-stdlib 與 kotlin-stdlib-jdk7

在學習過程中發現引用kotlin依賴版本有kotlin-stdlib、kotlin-stdlib-jdk7

那麼他們到底有什麼差別呢?

1.第一步,百度搜尋、谷歌搜尋

沒有搜到。。。

2.第二部,kotlin官網搜尋

發現一句話

If you're targeting JDK 7 or JDK 8, you can use extended versions of the Kotlin standard library. They contain additional extension functions for APIs added in new JDK versions. Instead of 

kotlin-stdlib

, use 

kotlin-stdlib-jdk7

 or 

kotlin-stdlib-jdk8

, depending on your JDK version.

翻譯:

如果您的目标是 JDK 7 或 JDK 8,則可以使用 Kotlin 标準庫的擴充版本。它們包含新 JDK 版本中添加的 API 的附加擴充功能。根據您的 JDK 版本,使用 kotlin-stdlib-jdk7 或 kotlin-stdlib-jdk8 代替 kotlin-stdlib      

 這時看到還有一個jdk8版本,通過上面能了解到kotlin-stdlib是預設版本。jdk7或jdk8是對使用的對應jdk版本的一個擴充。

但是他們到底有什麼差別呢?

3、第三步,看源碼

(1)引用kotlin-stdlib

kotlin-stdlib 與 kotlin-stdlib-jdk7

kotlin-stdlib-jdk7

kotlin-stdlib 與 kotlin-stdlib-jdk7

kotlin-stdlib-jdk8

kotlin-stdlib 與 kotlin-stdlib-jdk7

檢視多出來的包下邊代碼

kotlin-stdlib 與 kotlin-stdlib-jdk7
kotlin-stdlib 與 kotlin-stdlib-jdk7

此時明顯能看出來,jdk7裡面多出來的是有關jdk7的擴充代碼。jdk8對應的是jdk7和jdk8部分的擴充代碼。

4.第四步、尋找如何使用。

沒研究出來。。。有小夥伴知道的告訴我一下,jdk8裡的代碼有一個類

PlatformThreadLocalRandom        不知道 為什麼無法引用。      

繼續搜尋,找到一篇文章介紹比較詳細,大家可以參考

https://mbonnin.medium.com/the-different-kotlin-stdlibs-explained-83d7c6bf293