在Kotlin中,使用JVM时,似乎标准库有多种选择,即kotlin-stdlib
,kotlin-stdlib-jdk7
和kotlin-stdlib-jdk8
。
但是,我什么也找不到告诉我两者之间的区别。
我发现的唯一可见区别是我不能将com.fasterxml.jackson.databind.exc.MismatchedInputException
与kotlin-stdlib
一起使用,但是可以与kotlin-stdlib-jdk8
一起使用。
在任何地方我都可以使用一个优势来了解其优势,或者有人可以通俗易懂地解释这一优势?
答案 0 :(得分:4)
顾名思义,使用JDK8时应使用-jdk8。它包含用于将JDK 8中所做的更改集成到Kotlin标准库中的代码。
如pom所示,它依赖于-jdk7,该代码包含将JDK 7中所做的更改集成到Kotlin标准库中所需的代码。
-jdk7的pom表示,它取决于stdlib。
因此,简而言之,请使用与您的JDK匹配的一个。将其添加到依赖项还将通过传递方式添加JDK早期版本中的所有依赖项。
答案 1 :(得分:0)
通过在Kotlin项目中运行Gradle dependencies
任务,您可以找到一些有用的信息。这是示例项目中输出的一部分:
$ ./gradlew dependencies
...
kotlinCompilerClasspath
\--- org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.20
+--- org.jetbrains.kotlin:kotlin-stdlib:1.3.20
| +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.20
| \--- org.jetbrains:annotations:13.0
+--- org.jetbrains.kotlin:kotlin-script-runtime:1.3.20
+--- org.jetbrains.kotlin:kotlin-reflect:1.3.20
| \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.20 (*)
\--- org.jetbrains.intellij.deps:trove4j:1.0.20181211
...
答案 2 :(得分:0)
大多数stdlib位于普通的kotlin-stdlib
中。
kotlin-stdlib-jdk7
添加了抑制的异常和一些扩展方法。
kotlib-stdlib-jdk8
添加ThreadLocalRandom以及其他一些扩展方法,并在Regexes中按名称检索组。