2013-11-26 3 views
1

이것은 Force annotated Class to contain annotated Field의 정반대입니다.주석이 달린 필드에 자바의 주석이 달린 클래스를 포함하도록합니다.

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

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

클래스 필드 중 하나에 @NonEditable 주석이있는 경우; 그 클래스를 강제하는 방법은 @ContainsNonEditableFields로 주석을 달아야합니까?

+0

컴파일 타임에 또는 런타임에? 너 뭐 해봤 니? –

+0

@JimGarrison 컴파일 타임에만 해당. 그리고 현재 나는 주석 사이의 상호 관계를 만드는 방법을 모릅니다 : ( –

+0

@JimGarrison Jim 당신이 저를 여기 도와주세요.? –

답변

1

이 작업은 AspectJ를 사용하여 수행 할 수 있습니다.

는하지만 주요 아이디어는 @ContainsNonEditableFields 주석이없는 클래스 @NonEditable 주석 각 필드에 대한 오류를 선언, AspectJs declare warning or errors 기능을 사용하는 것입니다.

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

이 코드의 일종

은 (불행히도 나는 밖으로 상자의 작업 예제를 제공 할 수 있지만, 당신이 바로 그 질문을하는 경우에 유래에서 나는 것은 누군가가 당신을 도울 수) 낙서, 그것은 aspectj 구문을 작동하지 않습니다!

+0

+1 고맙습니다 !! Ralph. 이것은 새로운 정보입니다 !!! –

관련 문제