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