Marker Interfaces in Java?

s wurde mir beigebracht, dass die Marker-Schnittstelle in Java eine leere Schnittstelle ist und dazu verwendet wird, dem Compiler oder der JVM zu signalisieren, dass die Objekte der Klasse, die diese Schnittstelle implementiert, auf besondere Weise behandelt werden müssen, wie z. B. Serialisieren, Klonen us

Aber in letzter Zeit habe ich erfahren, dass es eigentlich nichts mit dem Compiler oder der JVM zu tun hat. Zum Beispiel beiSerializable interface die MethodewriteObject(Object) vonObjectOutputStream macht so etwas wieinstanceOf Serializable um festzustellen, ob die Klasse @ implementieSerializable & wirftNotSerializableException entsprechend. Alles wird im Code behandelt und dies scheint ein Entwurfsmuster zu sein, so dass wir, glaube ich, unsere eigenen Markierungsschnittstellen definieren können.

etzt meine Zweifel:

Ist die Definition einer Markierungsschnittstelle, die oben in Punkt 1 erwähnt wurde, falsch? Wie können wir dann eine Marker-Schnittstelle definieren?

Und anstatt das @ zu benutzinstanceOf Operator Warum kann die Methode nicht so etwas wie @ seiwriteObject(Serializable) so dass es eine Typprüfung zur Kompilierungszeit gibt und nicht zur Laufzeit?

Wie sind Anmerkungen besser als Markierungsschnittstellen?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage