Kotlin可重复@annotations不能在jdk-8上工作
我已经在@Parameter
中声明了一个可重复的注解 kotlin如下:
@Repeatable annotation class Parameter(val name: String);
但是当我如下所示使用它时,编译器会报告一个错误:
1.8之前的JVM版本只能重复带有源保留的注释
@Parameter("foo") @Parameter("bar") fun repeat() = 1;
我确定我正在使用jdk-8
kotlin 。 而对于kotlin-1.1.2
gradle插件,选项jvmTarget
也被设置为1.8
。
问:为什么它不能正常工作?
sourceCompatibility = 1.8 targetCompatibility = 1.8 compileKotlin { kotlinOptions{ jvmTarget = "1.8" } }
如果我没有弄错, Kotlin编译器目前的目标是JDK 1.6
类文件格式。 这意味着,在Java上 ,它不能将多个注释写入类文件。
虽然Kotlin在概念上支持多个注释,但是只要有1.8
定位目标,由于输出限制就无法这样做。
检查IntelliJ中的Kotlin编译器设置。 IntelliJ默认情况下不使用gradle来构建和运行你的项目。 它使用IDEA Kotlin插件。
Kotlin目前不可能。 有一个错误打开,请随时投票: https : //youtrack.jetbrains.com/issue/KT-12794