Java Kotlin自定义注释、参数

Java Kotlin自定义注释、参数,java,annotations,kotlin,Java,Annotations,Kotlin,我试图创建一个带有参数数组的自定义注释,但在尝试在注释的构造函数中设置参数时出错。它说它需要角色[]上的类型注释,而如果我是对的,则角色[]就是类型。我在文档中查找了语法,可以在这里找到: . 但本文档仅解释如何使用注释,而不是如何创建注释 这就是我的注释代码的外观: @NameBinding @Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS) @Retention(AnnotationRetention.RUNTIME) ann

我试图创建一个带有参数数组的自定义注释,但在尝试在注释的构造函数中设置参数时出错。它说它需要角色[]上的类型注释,而如果我是对的,则角色[]就是类型。我在文档中查找了语法,可以在这里找到: . 但本文档仅解释如何使用注释,而不是如何创建注释

这就是我的注释代码的外观:

@NameBinding
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class Secured(vararg val value: Role[])
enum class Role {
   ADMIN, USER
}
这就是我的角色类的外观:

@NameBinding
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class Secured(vararg val value: Role[])
enum class Role {
   ADMIN, USER
}
这就是我想使用它的方式:

@Secured(Role.ADMIN, Role.USER)

我试图寻找任何关于如何在Kotlin中创建注释的示例,但似乎找不到任何奇怪的例子。有谁能帮我吗?

以下内容汇编:

enum class Role { ADMIN, USER }

annotation class Secured(vararg val value: Role)

@Secured(Role.ADMIN, Role.USER)
fun foo() {}
正如这一点:

enum class Role { ADMIN, USER }

annotation class Secured(val value: Array<Role>)

@Secured([Role.ADMIN, Role.USER])
fun foo() {}
enum类角色{ADMIN,USER}
受保护的批注类(val值:数组)
@安全([Role.ADMIN,Role.USER])
fun foo(){}

它们编译为相同的字节码,但Kotlin要求您使用稍微不同的语法来实例化注释。

vararg
和数组?另外,
[]
语法不是在Kotlin中声明数组类型的方式。@OliverCharlesworth我忘了删除vararg。我认为
[]
语法确实有效。所以我应该使用
数组