Java의 마커 인터페이스는 다음과 같이 메소드와 상수를 포함하고 있지 않은 표시용 인터페이스를 뜻한다.
public interface marker{
}
그럼, 이러한 마커 인터페이스는 왜 쓰는가?
정답은 간단하다. 해당 클래스 파일을 컴파일러와 JVM에게 특별한 방식으로 처리해야 함을 알릴 수 있다.
우리가 흔히 쓰는 Serializable, Cloneable과 같이 직렬화, 복제화를 함에 있어 특별한 방식으로 처리해야 함을 알린다.
참고로, 마커 어노테이션이라는 문법도 존재한다.
@Retention(RetentionPolicy.RUNTIME)
@interface Markable1{
}
Class clazz = this.getClass();
if(clazz.isAnnotationPresent(Markable1.class)){
operationA();
}
다음과 같이 특정 인터페이스에 마커 어노테이션을 통해 해당 어노테이션이 적용된 것인지를 확인할 수 있다.
차이점은 마커 인터페이스는 상속 관계의 클래스들에게도 영향을 미치지만 마커 어노테이션은 그렇지 않다.
'Archived(CSE Programming) > Java' 카테고리의 다른 글
Java_자바의 기본 (0) | 2020.01.13 |
---|---|
Java 깊은 복사와 얕은 복사 (2) | 2019.11.03 |
Java_메모리 구조 (0) | 2019.11.03 |
Java 예외처리 (0) | 2019.11.03 |
Java 컬렉션(Collection) (0) | 2019.11.03 |