首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin如何使用JDK 1.8调用Java 11代码?

Kotlin如何使用JDK 1.8调用Java 11代码?
EN

Stack Overflow用户
提问于 2020-08-17 22:52:02
回答 1查看 382关注 0票数 1

我使用了一个Kotlin项目,它有一些Java 11调用,并注意到它似乎使用Java 8构建和运行得很好。

这个调用特别针对java.lang.String#isBlank(),它是在Java11中引入的。

我正在使用Gradle构建和运行测试。Build JDK设置为JDK 1.8,Kotlin编译目标也为1.8:

代码语言:javascript
复制
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs += listOf("-Xjsr305=strict")
        jvmTarget = "1.8"
    }
}
代码语言:javascript
复制
gradle -v

------------------------------------------------------------
Gradle 6.6
------------------------------------------------------------

Build time:   2020-08-10 22:06:19 UTC
Revision:     d119144684a0c301aea027b79857815659e431b9

Kotlin:       1.3.72
Groovy:       2.5.12
Ant:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM:          1.8.0_265 (AdoptOpenJDK 25.265-b01)
OS:           Mac OS X 10.15.6 x86_64

这是一个单元测试,它调用Java 11,但仍然编译和运行:

代码语言:javascript
复制
import org.junit.jupiter.api.Test

class BlankTest {

    @Test
    fun testBlank() {
        val s = java.lang.String("test string")
        val blank = s.isBlank()
        println("Input string blank? : $blank")
    }
}

这怎麽可能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-17 23:18:03

答案是,您实际上并没有使用Java11的isBlank()方法,而是在调用可以应用于java.lang.String的Kotlin's isBlank extension function

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63453344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档