如何在Kotlin注释中声明数组值?
我在Kotlin创建自己的注释时遇到了一些问题。 我必须创建一些注释,并在其中一些我需要声明与数组类型的值。 在Java中,我们可以这样做:
public @interface JoinTable { ... JoinColumn[] inverseJoinColumns() default {}; ... }
JoinColumn也是一个注释类型。
我想在科特林做这样的事情:
annotation class JoinTable( val name: String, val joinColumns: Array<JoinColumn> )
我也试图做到这一点:
annotation class JoinTable( val name: String, val joinColumns: List<JoinColumn> )
但是我的IDe说:
注释成员的类型无效
我该怎么办?
谢谢!
和java一样,注释的值必须在编译时可用。 这意味着如果JoinColumn
是一个普通的类或数据类, val joinColumns: List<JoinColumn>
是不可能的。 如果它是一个枚举类( enum class JoinColumn
),可以使用它。
有关允许的类型,另请参阅官方kotlin文档https://kotlinlang.org/docs/reference/annotations.html
允许的参数类型是:
- 对应于Java基本类型(Int,Long等)的类型;
- 串;
- 类(Foo :: class);
- 枚举;
- 其他注释;
- 上面列出的类型的数组。
注释参数不能具有可为空的类型,因为JVM不支持将null存储为注释属性的值。
所以,这是我的大错。 我没有注意到在我的实现JoinColumn不是一个注释。
class JoinColumn()
那么修正^ _ ^:
annotation class JoinColumn()