본문 바로가기

컴퓨터공학/Java

CS> 자바에서 marker interface는 무엇인가?

Marker interface 

상수도 없고 method도 없는 완전히 비어 있는 interface 이다.

구현할 내용이 전혀 없는 인터페이스이다.

이걸 왜 쓰냐??? 특별한 행동을 컴파일이 나 JVM에게 알려주기 위해서 사용된다. 

tag interface라고 부르기도 한다. 

 

종류

Serializable :

이 마커 인터페이스를 구현한 클래스인 경우 컴파일러는 컴파일시 해당 클래스에서 생성되는 객체는 나중에 스트림을 통한 객체 직렬화를 사용해서 통신될 수 있다는 표시

실제 객체 실행시 JVM이 serializable 마커 인터페이스를 구현한 객체는 객체 직렬화를 할 수 있게 된다. 

 

Clonnable :

객체를 복제하는 경우 클론 메소드를 사용할 수 있는데, 모든 객체가 클론 메소드를 통해 복제될 수 있는 게 아니다. clonnable이라는 마커 인터페이스를 구현한 객체인 경우만 JVM이 클론 기능을 실행시 support해준다.  

 

Single Thread Model :

서블렛에서 사용된다. 서블렛이 싱글 스레드 모델을 구현하면 더 이상 디폴트 값인 멀티 스레드로 클라이언트 request를 처리하지 않고 싱글 스레드로 하나하나 JVM이 처리하게 된다.

Remote :

remote methond invocation 에서 사용하는 객체인 경우 원격 호출로 사용될 수 있는 객체들은 remote interface 라는 마커 인터페이스를 반드시 구현했어야만 JVM이 원격 호출로 사용될 수 있는 객체라고 인식하고 그 기능을 support 한다. 

 

 

marker interface 컴파일러에게 자격을 부여하게 만들고 JVM은 자격이 부여된 객체에 한해서 특정 작업을 support한다. 

 

 

 

 

정리

No constant or method, empty body, called as Tag interface

Indicate special function to compiler or JVM

Can be replaced with annotation from JAVA 5

: 자바 5부터 annotation 기능이 생긴 이후로 annotation을 사용하여 marker interface를 대체하는 경우도 가능하다.