2013-11-26 142 views
1

這與Force annotated Class to contain annotated Field剛好相反。在java中強制註釋字段包含帶註釋的類

@Target(ElementType.TYPE) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface ContainsNonEditableFields {} 

@Target(ElementType.FIELD) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface NonEditable {} 

如果任何class字段用@NonEditable註釋;那麼如何強制該類應該使用@ContainsNonEditableFields進行註釋?

+0

在編譯時或運行時?你有什麼嘗試? –

+0

@JimGarrison編譯時間。目前我沒有任何想法如何使這個註釋之間的交叉關係:( –

+0

@JimGarrison吉姆你能幫我在這裏..? –

回答

1

這可以用AspectJ完成。

但是關鍵的想法是使用AspectJs declare warning or errors函數來聲明在沒有@ContainsNonEditableFields註解的類中的每個字段有@NonEditable註釋的錯誤。

(可惜我不能提供一個工作示例開箱,但我的東西有人在計算器可以幫助你,如果你問正確的問題)

declare error : @annotation(NonEditable) && 
        ! @annotation(ContainsNonEditableFields)  
       : "the class need ContainsNonEditableFields annotation"; 

這個代碼僅是某種塗鴉,它不工作的aspectj語法!

+0

+1謝謝!拉爾夫。這是新的信息學習! –