我有一个旧的javaandroid项目,它使用我想扩展的java6编译器,但是我喜欢用kotlin编写新的“parts”(我在kotlin中没有xp)。所以,基本上既然java代码发出java6兼容的字节码,我应该配置kotlin编译器也发出java6兼容的字节码吗?所以,我的意思是,一般来说,java和kotlin版本之间应该有匹配吗?因为在我的想象中,jvm不能执行(至少不能正确执行)将哪些部分编译成不同的字节码的程序
9o685dep1#
是的,他们应该匹配。如果不这样做,编译器会抱怨某些函数。为java6编译的kotlin库可以在java8应用程序中正常运行,但是根据我的经验,如果一个项目以java8为目标,但是没有配置kotlin代码来编译为java8,那么编译器就会在某些类型的高阶函数和sam转换上陷入困境。android项目中的kotlin默认编译成与java-6兼容的字节码,因此如果您坚持使用java6,就不必做任何事情。如果您想使用Java8特性,可以将其添加到 android 阻止 app/build.gradle :
android
app/build.gradle
kotlinOptions { jvmTarget = "1.8" } compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 }
我建议使用java8,因为jetpack库的javadocs中的各种注解表明,它们计划最终需要java8。
1条答案
按热度按时间9o685dep1#
是的,他们应该匹配。如果不这样做,编译器会抱怨某些函数。为java6编译的kotlin库可以在java8应用程序中正常运行,但是根据我的经验,如果一个项目以java8为目标,但是没有配置kotlin代码来编译为java8,那么编译器就会在某些类型的高阶函数和sam转换上陷入困境。
android项目中的kotlin默认编译成与java-6兼容的字节码,因此如果您坚持使用java6,就不必做任何事情。如果您想使用Java8特性,可以将其添加到
android
阻止app/build.gradle
:我建议使用java8,因为jetpack库的javadocs中的各种注解表明,它们计划最终需要java8。