Was nutzt Marker-Interfaces in Java?
Wenn es nichts zu implementieren, die in der marker-interfaces wie Serializable . . was ist der nutzen der Umsetzung?
InformationsquelleAutor der Frage GuruKulki | 2010-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
In früheren Java-Versionen, Marker-Interfaces waren der einzige Weg zu erklären, Metadaten über eine Klasse. Zum Beispiel, die Serializable Marker Interface, mit dem der Autor einer Klasse sagen, dass Ihre Klasse verhält sich korrekt, wenn Sie serialisiert und deserialisiert werden.
In der modernen Java -, marker-interfaces haben keinen Platz. Sie kann komplett ersetzt werden durch Anmerkungendie es erlauben, für eine sehr flexible Metadaten-Fähigkeit. Wenn Sie Informationen über eine Klasse, und dass diese Informationen nie ändert, dann Anmerkungen sind sehr nützlich, Sie zu vertreten.
InformationsquelleAutor der Antwort Chris Pitman
Joshua Bloch: Effective Java, 2nd Edition, S. 179
Ich persönlich denke, ich werde den Bogen zu Joshua ' s überragende Kenntnisse auf diesem Gebiet.
InformationsquelleAutor der Antwort T C
Solche marker-interfaces sind nützlich in dem Fall anderen code, der entscheidet, je nachdem, ob ein Objekt implementiert einige marker-interface.
Im Fall von
Serializable
Reflexion werden serialisiert, die Felder der Objekte.Nun Anmerkungen sind bevorzugt, da Sie nicht vermehrt auf die sub-Klassen.
Sehen Marker interface pattern.
InformationsquelleAutor der Antwort Gregory Pakosz
Es zeigt sich, dass die Klasse (und folglich alle Bereiche, die nicht vorübergehend), sind Kandidaten für das serialisieren. Und wenn Sie einen Rahmen angewiesen, auf serialisieren, können Sie natürlich schreiben Sie eine Methode so:
zur Begrenzung der Klassen, die Sie bereit sind zu akzeptieren.
Da ein serialisiertes Objekt zu behalten muss die Kompatibilität zwischen Systemen, serialisieren ist ein explizite design-Entscheidung und daher erfordert die Verwendung des marker-interface, erkennen solche Kandidaten.
Gibt es auch ein Sicherheits-Aspekt. Sie wollen nicht, um alles serialisable - andernfalls können Sie versehentlich aussetzen (sagen), Passwörter oder andere sensible Daten über serialisieren.
InformationsquelleAutor der Antwort Brian Agnew
Wenn Sie eine Schnittstelle implementieren, dann
instanceof
wahr werden. Wenn Sie die Schnittstelle hat nichts zu implementieren, dann können Sie diese verwenden, um zu markieren eine Klasse mit meta-Daten wie Anmerkungen machen für Java 1.5 und bis zimmerreserviereung, ohne das Sie Kraft der Implementierung zu tun, nichts besonderes.InformationsquelleAutor der Antwort cyborg
Sind Sie aufgerufen marker Schnittstellen. Und wie der name schon sagt, Sie markdass einige Objekte verfügbar, die für bestimmte Art von Operationen.
Serializable
bedeutet, dass das Objekt bei der Speicherbereinigung java-Serialisierung, zum Beispiel.Es wurde diskutiert, ob Sie sollten nicht ersetzt werden durch Anmerkungen, seit Ihrer Funktionen sehr ähnlich sind.
InformationsquelleAutor der Antwort Bozho
Du hast Recht in der Argumentation, dass eine leere Schnittstelle betrifft nicht die "standard" - Ausführung des Programm, das ist basierend auf Inspektion/mutation der Felder und Versand-Methoden.
Jedoch, marker-interface sind nützlich, wenn verwendet, in Verbindung mit Reflexion: Eine Bibliothek/Methode prüft (per reflection) auf ein Objekt und funktioniert anders, wenn seine Klasse impplements das marker-interface. Ab Java5 gibt es sehr wenig Bedarf für marker-interfaces - das gleiche "Markierung" - Anlage kann erreicht werden durch Java-Annotationen, die (wieder) die meisten von Ihre Wirkung wird erreicht durch Reflexion-basierten code.
InformationsquelleAutor der Antwort Itay Maman
Der Hauptzweck ist, sagen Sie dem compiler, dass die Behandlung anders für das Objekt der Klasse, die implementiert marker-interface.
InformationsquelleAutor der Antwort Chanikag
Suche gezielt auf marker-interface in Java z.B. Serializable, Clonnable und Remote es aussieht werden Sie verwendet, um auf etwas zu compiler-oder JVM. Also, wenn die JVM sieht, dass eine Klasse Serialisierbar ist es schon einige spezielle operation auf, ähnliche Weise, wenn die JVM sieht eine Klasse zu implementieren, Clonnable es führt eine operation zur Unterstützung von Klonen. Gleiches gilt für die RMI-und Remote-interface. Also kurz Marker-interface angeben, signal oder einen Befehl zum Compiler-oder JVM.
Lesen Sie mehr: http://javarevisited.blogspot.com/2012/01/what-is-marker-interfaces-in-java-and.html#ixzz2v6fIh1rw
InformationsquelleAutor der Antwort user3293519