Kotlin在编译时使用分离方式进行了空白检查,以“可空”? 和“notnullable”对象。 它有一个KAnnotator来帮助确定来自Java的对象是否为nullabale。 但是,如果不可空的类的某些部分发生了变化呢? 想想看,我们有一只猫,它肯定有一头可以咀嚼的头。 当我们问猫咪喵喵,它的脑袋嗡嗡作响: package org.cat class CatHead(){ fun mew(){ println("Mew") } } class Cat(){ var head = CatHead() fun mew(){ head.mew() } } fun main(args:Array<String>){ val cat = Cat() cat.mew() } 现在让我们给这张漂亮的照片增加一个JAVA猫疯子(CatManiac.java),他在得到的时候切断了猫头: import org.cat.*; public class CatManiac { public static void cutCatHead(Cat cat){ cat.setHead(null); } } 所以如果我们把一只猫传给一个疯子,他肯定会削减它的头。 而猫咪怎么没有头说呢? fun main(args:Array<String>){ val cat […]
我有一个Kotlin Gradle项目,我想在jar文件中包含Kotlin的运行时和stdlib。 我目前正在使用它,但是当我使用build.gradle配置构建项目时,它不包括运行时或stdlib。 compileKotlin { kotlinOptions { includeRuntime = true noStdlib = false } } 这是我使用的包含运行时/ stdlib在jar中的Gradle代码,但它不像我所期望的那样工作。 以下是一些上下文的build.gradle文件: https : //github.com/BenWoodworth/CrossPlatformGreeter/blob/bd1da79f36e70e3d88ed871bc35502ecc3a852fb/build.gradle#L35-L43 Kotlin的Gradle文档似乎表明,将kotlinOptions.includeRuntime设置为true应该在生成的.jar文件中包含Kotlin运行时。 https://kotlinlang.org/docs/reference/using-gradle.html#attributes-specific-for-kotlin 编辑:这可能是相关的。 当我运行compileKotlin时,我得到了一些与运行时相关的警告: :compileKotlin w: Classpath entry points to a non-existent location: <no_path>\lib\kotlin-runtime.jar BUILD SUCCESSFUL