4
我在創建註釋中的某些元數據結構時遇到問題。我們使用註釋爲hibernate實體屬性定義特殊屬性,但它可能在任何地方都可用。 我想創造出代表這些結構條件:java註釋中的類型層次結構
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;
}
我知道這樣,我在註釋定義定義繼承以上不可能。但是,我怎麼能考慮我的註釋,或者是否在一個「家庭」?
這不幸的是沒有幫助我。我需要通過一些常規的LogicalExpression列表來定義結構,但是使用特定的AND,或者NOT或其他表達式。 –
更新了答案我認爲這絕對能滿足你的目的。 –
這是個好主意,但這個解決方案仍然有其自身的侷限性。但是你的解決方案給我帶來了另一個想法 - 我可以用NODE的形式實現它。節點將包含應用於當前級別的邏輯表達式類型以及屬性列表和子節點列表。 –