gpt4 book ai didi

kotlin - Kotlin 的 Java 注解实现

转载 作者:行者123 更新时间:2023-12-02 12:18:27 26 4
gpt4 key购买 nike

我正在尝试将 @Age 约束(在网上找到)的实现从 Java 复制到 Kotlin,我复制了 Java 代码库并使用 IDE 将其转换为 Kotlin 代码。

Java代码

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Repeatable(Age.List.class)
@Documented
@Constraint(validatedBy = { })
public @interface Age {
String message() default "Must be greater than {value}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
long value();
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Documented
@interface List {
Age[] value();
}
}

Intellij生成对应的Kotlin代码

@Target(AnnotationTarget.*)  
@Retention(RUNTIME)
@Repeatable(Age.List::class)
@Documented
@Constraint(validatedBy = arrayOf())
annotation class Age(
val value: Long,
val message: String = "Must be greater than {value}",
val groups: Array<KClass<*>> = arrayOf(),
val payload: Array<KClass<out Payload>> = arrayOf()) {

@Target(AnnotationTarget.FUNCTION,
AnnotationTarget.PROPERTY_GETTER,
AnnotationTarget.PROPERTY_SETTER,
AnnotationTarget.FIELD,
AnnotationTarget.ANNOTATION_CLASS,
AnnotationTarget.CONSTRUCTOR,
AnnotationTarget.VALUE_PARAMETER,
AnnotationTarget.TYPE)
@Retention(RUNTIME)
@Documented
annotation class List(vararg val value: Age)
}

Kotlin 代码导致错误,指出“注释类中不允许使用成员”。从 Age 中移出注释类 List 是否可以解决问题?有没有其他方法可以在另一个注解类中实现注解类?

谢谢。

最佳答案

是的,您需要将List 移出Age。在 Kotlin 的 future 版本中,很可能会删除在注释中嵌套类的限制;它更多的是设计疏忽而不是本质问题。

关于kotlin - Kotlin 的 Java 注解实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49661899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com