gpt4 book ai didi

java - 可重复注释目标子集不匹配编译器错误

转载 作者:行者123 更新时间:2023-12-03 23:14:45 25 4
gpt4 key购买 nike

我有以下注释;

@Repeatable(Infos.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.Type, ElementType.Constructor})
public @interface Info {

String[] value() default {};
}

如您所见,它是可重复的,并且使用包装类 Infos即;
@Retention(RetentionPolicy.RUNTIME)
public @interface Infos {

Info[] value();
}

但我在 Info 上收到以下编译器错误类(class);

target of container annotation is not a subset of target of this annotation



这个错误的原因和解决方法是什么?

最佳答案

问题是由于缺少@Target容器注解类定义 Infos , 自 Info有以下目标;

@Target({ElementType.Type, ElementType.Constructor})
public @interface Info { .. }

这意味着这个注解只能放在类型和构造函数上,但是容器类也应该定义一些目标,因为它本身就是一个注解。由于警告还提到,这组目标应该是原始注释目标的子集。例如;
@Target(ElementType.Type)
public @interface Infos { .. }

这将允许我们重复 Info类型注解,而不是构造器注解;
@Info(..)
@Info(..)
class SomeClass { .. }

另外需要注意的是,你不能在容器注解中添加新的目标类型,因为主注解没有将它作为目标包含,这将是没有意义的。从那以后;

container class can only contain a subset of main annotation target set.

关于java - 可重复注释目标子集不匹配编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179159/

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