Kotlin可重复的@annotations不适用于jdk-8

我在
《Kotlin可重复的@annotations不适用于jdk-8》kotlin中声明了一个可重复的注释@Parameter,如下所示:

@Repeatable
annotation class Parameter(val name: String);

但是当我使用它时,编译器报告错误:

Only annotations with SOURCE retention can be repeated on JVM version before 1.8

@Parameter("foo")
@Parameter("bar")
fun repeat() = 1;

我确定我在《Kotlin可重复的@annotations不适用于jdk-8》kotlin中使用jdk-8.对于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定位之前,由于输出限制,它不能这样做.

点赞