我遇到了一些在注解中创建元数据结构的问题。我们使用注解来定义特殊属性以适用于Hibernate实体属性,但它也可以在任何地方使用。
我想要创建一个代表这些结构的条件:
attribute1 = ...
OR
(attribute2 = ...
AND
attribute3 = ...)
问题是我需要使用这些注释定义一些“树”形结构。以下是我想要达到的设计:
@interface Attribute {
... some attributes ...
}
@interface LogicalExpression {
}
@interface OR extends LogicalExpression {
Attribute[] attributes() default {};
LogicalExpression logicalExpressions() default {};
}
@interface AND extends LogicalExpression {
Attribute[] attributes() default {};
LogicalExpression logicalExpressions() default {};
}
@interface ComposedCondition {
Attribute[] attributes() default {};
LogicalExpression logicalExpressions() default {};
}
我想使用所有这些注释,根据此示例:
。
public class Table {
@ComposedCondition(logicalExressions = {
@OR(attributes = {@Attribute(... some settings ...)},
logicalExpressions = {
@AND(attributes = {@Attribute(...), @Attribute(...)})
})
}
private String value;
}
我知道在注释定义中以这种方式继承是不可能的。但是我如何将我的注释AND和OR视为同一“家族”?