2012-10-24 4 views
4

이렇게하는 방법이 있는지 확실하지 않지만 특정 인터페이스를 구현하는 클래스에만 유효한 클래스에 대한 주석을 갖고 싶습니다.특정 인터페이스를 구현하는 클래스에만 유효한 Java Annotation?

주석의 목적은 관리자가 관리 객체 집합에 해당 클래스의 인스턴스를 추가해야한다는 것을 알 수 있도록하기위한 것입니다. 컴파일 타임에 제한을 추가 할 방법이 없다면 런타임시이를 처리하는 가장 좋은 패턴은 무엇일까요?

배경 : 현재 I 사용자가 사전 정의 된 일련의 작업을 수행 할 수있는 응용 프로그램을 가지고 문자열 [] 단일 문자열 출력 결과는 액션이 ​​시나리오 그룹화 및 I는 ENUM이 있는지 이러한 동작이 정의 된 시나리오마다 그리고 이러한 열거 형을 전환하여 해당 클래스 내에서 개별 메서드를 호출하는 단일 클래스 (즉, 단일 동작을 추가하면 코드의 여러 영역이 변경된다는 것을 의미)을 늘리고 싶습니다. 신참 개발자가 작성해야하는 단일 클래스 만 인식하면 작업을 올바른 목록에 추가하고 자동으로 사용할 수 있습니다.

내가 결정한 해결책은 개발자가 구현할 작업 인터페이스를 만든 다음 해당 시나리오를 원하는 시나리오/시나리오와 함께 등록하는 주석을 추가하여 단일 변경 사항을 단일 클래스 작성으로 분리하는 것입니다.

답변

2

marker interface을 사용할 수 있습니다.이 경우 더 많은 또는 더 적은 어노테이션의 선행자가 될 것입니다. 언급 한 인터페이스를 확장하도록 정의한 경우 해당 인터페이스로 표시된 클래스도 인터페이스를 구현하는지 확인할 수 있습니다.

반면에; 그 이유만으로 인터페이스가 존재한다면 "이 인터페이스를 구현하는 모든 클래스"규칙을 만들면됩니다.

물론 이것은 관리자 인스턴스를 제어 할 수 있다고 가정합니다.

+0

즉, 빈 인터페이스입니까? 내가 사용하고있는 인터페이스가 어떤 구조를 가지고 있으며 마커로 충분할 것이므로 필요하지 않은 것은 무엇입니까? 관리자가 "작업"을 다른 시나리오에서 유효한 그룹으로 구분하기 때문에 주석을 원합니다. 내 질문에 배경을 추가하겠습니다. – Link19

+1

예, 빈 인터페이스입니다. 시나리오마다 인터페이스를 만들 수 있으며 각 인터페이스는 Action 인터페이스를 확장합니다. 그런 식으로 다른 개발자는 적절한 시나리오 인터페이스 만 구현하면됩니다. 어노테이션도 잘 동작하지만, 컴파일시 올바른 인터페이스가 구현되었는지 확인할 수는 없습니다. –

관련 문제