java - Kotlin 自定义注释、参数

标签 java annotations kotlin

我正在尝试创建一个带有参数数组的自定义注解,但在尝试在注解的构造函数中设置参数时出现错误。它说它期待 Role[] 上的类型注释,而如果我是对的,Role[] 就是类型。我在文档中查找了语法,可以在这里找到: https://kotlinlang.org/docs/reference/annotations.html .但是这个文档只解释了我如何使用注释,而不是如何创建注释。

这是我的注释代码的样子:

@NameBinding
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class Secured(vararg val value: Role[])

这是我的 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() {}

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

关于java - Kotlin 自定义注释、参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49138837/

相关文章:

java - 后续意图更新时出现 Dialogflow INVALID_ARGUMENT 错误

Java - 根据条件返回列表

java - 带有 Tomcat 8 和 JDK 8 的 Openshift DIY cartridige。JAVAHOME 订阅

java - 以编程方式连接到 Android 中的隐藏 Wi-Fi 网络?

android - 关于暂停和延期的概念问题

java - Connection.close()后数据库仍在使用

java - 使用反射获取java注释

java - Spring 3 基于注解的验证 : password and confirm password

java - Hibernate 单表中复合外键和主键的一对一映射

安卓 : clickable Image horizontal slider using kotlin