마커 인터페이스

김민지·2022년 10월 10일
0

자바

목록 보기
6/21
post-thumbnail

보게 된 계기

  • PageRequest는 직렬화를 위해 Serializable 인터페이스를 상속받는다.
    그런데 Serializable 인터페이스 내부를 보면 다음과 같이 비어있다.
  • 업로드중..
  • 내부에 아무것도 없는 인터페이스를 상속받는다는게 이해가 가지 않는다. 사실은 보안 등의 이유로 내가 보지 못하게 막아놓은것일까?

마커 인터페이스

  • 일반적인 인터페이스와 동일하지만 사실상 아무 메소드도 선언하지 않은 인터페이스를 말한다
  • 타입체크 정도의 일을 한다.
  • 인터페이스를 구현하는 클래스의 객체가 직렬화, 복제 등과 같은 특별한 방식으로 처리되어야한다는 것을 컴파일러 또는 JVM에 신호하는 데 사용됩니다.
  • 이 클래스가 Serializable인 것을 발견하면 특별한 작업을 수행 할 수 있습니다.

타입 체크는 어떻게 하는 것일까?

  • 직렬화를 할때 예를들면 writeObject 등의 함수를 사용하는데 이 함수 내부 구현을 봐보면
    Serializable 을 구현하지 않으면 예외를 터뜨리도록 구현해놨다
  • Serializable을 구현한 객체 / 구현하지 않은 객체로 나뉘게 되니 타입체크가 가능해진다

왜 타입체크를 해야하는것일까?

  • 마커인터페이스는 타입체크 정도의 일을 한대요.
    그런데 왜 (Serializable을 구현한 객체 , 구현하지 않은 객체)의 구분이 필요한걸까요?
    모든 타입에 대해서 예외를 터뜨리지 않게 되면 매번 Serializable을 구현하지 않아도 되는거잖아요
    Serializable을 구현한 객체와 구현하지 않은 객체는 타입에 따라서 처리해야 될 코드가
    달라서 구분이 필요한건가요?
    (답을 얻지 못했다)

출처
https://woovictory.github.io/2019/01/04/Java-What-is-Marker-interface/
https://kjhoon0330.tistory.com/m/entry/Java-%EB%A7%88%EC%BB%A4-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
http://daplus.net/java-java%EC%9D%98-%EB%A7%88%EC%BB%A4-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4/

profile
안녕하세요!

0개의 댓글