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

问题描述 投票:0回答:1

我想多次重复使用一堆相同的注释。但问题是我不能通过应用它们来创建另一个注释(因为它们缺少 @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>
。有没有更好的办法?

java jakarta-ee annotations unmarshalling
1个回答
0
投票

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

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

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

该列表是静态的,您必须定义

MyClass
(或其他)的子类型,以便在每个子类型上制作不同的
myList

© www.soinside.com 2019 - 2024. All rights reserved.