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