很多时候,当我在 Kotlin 代码中使用来自 Java 库的注释时,我必须指定目标,以便指定编译代码中的哪些元素必须被注释:
data class User(
val id: String,
@get:Email
val email: String
)
我希望能够简单地使用 @Email
,而不是指定 @get:Email
,特别是当它出现在很多地方时。
问题:有没有办法提示 Kotlin 编译器在所有地方使用不同的目标,这样如果我使用 @Email
,它就会像处理它一样处理它@get:电子邮件
?或者还有其他方法可以省略指定目标吗?如何才能实现呢?可以在编译阶段通过注释处理来完成(像 Lombok 那样)吗?
如果有任何想法,即使它们没有直接回答我的问题,我也会很感激。
最佳答案
您无法覆盖它。也许创建以 @Email
注释为目标的注释,并在尝试调用目标时提供属性 getter。
指定目标由注释目标决定。当注释的目标指定为 jvm use-targets 时那么您必须使用 @get:
来指定注释的目标是属性的 getter。
为了简单地使用@Email
,您必须使用 kotlin target types对于您的注释,可能是 PROPERTY
。请注意,PROPERTY
目标不适用于 Java。
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.PROPERTY)
annotation class Email
关于java - 注解处理: how to change annotation target in Kotlin code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65347260/