【问题标题】:How can I avoid repeating the same annotation arguments everywhere?如何避免在任何地方重复相同的注释参数?
【发布时间】:2021-04-18 12:54:02
【问题描述】:

我正在使用来自需要参数列表的库中的注释,并且在我的项目中,有很多类使用具有完全相同参数的此注释。

@AnnotationFromDependency(values = [long, list, of, variables, that, might, change])
class Foo {
    fun bar() {
        println("dostuff")
    }
}

如何避免将 @AnnotationDependency 的相同参数复制到每个使用它的类?在变量中定义参数列表不起作用,因为它不是编译时常量。

val myValues = arrayOf("long", "list", "of", "values", "that", "might", "change")

@AnnotationFromDependency(values = myValues) // error: An annotation argument must be a compile-time constant
class Foo {
    fun bar() {
        println("dostuff")
    }
}

【问题讨论】:

  • @Alex.T 只允许原语和字符串作为常量,而不是数组。

标签: kotlin annotations


【解决方案1】:

定义一个自定义注解并使用第三方注解:

@AnnotationFromDependency(values = ["long", "list", "of", "variables", "that", "might", "change"])
annotation class MyAnnotation()

注意: 元注释是应用于其他注释的注释。

接下来,在需要的地方使用您的注释而不是第三方注释:

@MyAnnotation
class Foo()

如果您需要修改值列表,您只需在一处进行。

【讨论】:

  • 这种行为有官方文档吗?我不知道你能做到这一点!
  • 这就是注解在 Java 中的设计方式,没有什么能阻止您在 Kotlin 中利用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 2019-02-26
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多