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?