java 如果注解没有@Target({ElementType.ANNOTATION_TYPE}),如何组合多个注解以供重用

hrirmatl  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(111)

我想多次重复使用一堆相同的注解。但问题是我不能通过应用它们来创建另一个注解(因为它们缺少@Target({ElementType.ANNOTATION_TYPE}),而且我不能更改它)
例如,为了更好地理解,我有一个operand

@XmlElements({
                @XmlElement(name = "element1", type = Element1.class),
                @XmlElement(name = "element2", type = Element2.class),
                @XmlElement(name = "element3", type = Element3.class)
        })
        private MyOperand operand;

但另一个类在其字段上有完全相同的注解

@XmlElements({
                @XmlElement(name = "element1", type = Element1.class),
                @XmlElement(name = "element2", type = Element2.class),
                @XmlElement(name = "element3", type = Element3.class)
        })
        private List<MyOperand> operands;

我想到的最好的方法是用这个字段和至少两个类的注解(在我的例子中是3个)创建一个基类,这两个类都有List<MyOperand>。还有更好的办法吗?

vm0i2vca

vm0i2vca1#

注解可以采用参数列表。但是,参数不是动态的,一旦定义,就不能添加或更改

@interface ClassInfo{
   // Note use of array
   String[] myList();
}

@ClassInfo( myList = {"Larry", "Moe", "Curly"} )
public class MyClass {}

该列表是静态的,您必须定义MyClass的子类型(或其他),以便在每个子类型上创建不同的myList

相关问题