Java의 Marker 인터페이스는 빈 인터페이스 이며이 인터페이스를 구현하는 클래스의 객체가 직렬화, 복제 등과 같은 특별한 방식으로 처리되어야한다는 것을 컴파일러 또는 JVM에 신호하는 데 사용됩니다.
그러나 최근에는 실제로 컴파일러 또는 JVM과 관련이 없다는 것을 알게되었습니다. 예를 들어, 경우에 Serializable계면에있어서 writeObject(Object)의 ObjectOutputStream같은 것을 수행 instanceOf Serializable클래스 구현하는지 여부를 검출 Serializable및 드로우 NotSerializableException따라서. 모든 것이 코드에서 처리되며 이것은 디자인 패턴 인 것처럼 보이므로 자체 마커 인터페이스를 정의 할 수 있다고 생각합니다.
이제 내 의심 :
위에서 언급 한 마커 인터페이스의 정의가 1 점에서 잘못 되었습니까? 그러면 마커 인터페이스를 어떻게 정의 할 수 있습니까?
그리고
instanceOf연산자 를 사용하는 대신writeObject(Serializable)런타임이 아닌 컴파일 타임 유형 검사가되도록 메소드를 사용할 수없는 이유는 무엇 입니까?주석이 마커 인터페이스보다 나은 점은 무엇입니까?
Serializable주석은 말도 안되고@NonNull인터페이스는 말도 안됩니다. 나는 말할 것입니다 : 주석은 마커 + 메타 데이터입니다. BTW : Anofations의 Forefunner는 Javadoc에서 태어난 XDoclet으로 Annotations에 의해 사망했습니다.