Beim Durchsuchen des Java Collections Framework ist mir aufgefallen, dass einige der Schnittstellen den Kommentar enthalten (optional operation). Diese Methoden ermöglichen das Implementieren von Klassen über eine, UnsupportedOperationExceptionwenn sie diese Methode einfach nicht implementieren möchten.
Ein Beispiel hierfür ist die addAllMethode in der Set Interface.
Nun, wie in dieser Reihe von Fragen dargelegt, sind Schnittstellen ein bestimmender Vertrag für das, was die Nutzung erwarten kann.
Schnittstellen sind wichtig, weil sie unterscheiden, was eine Klasse tut und wie sie es tut. Der Vertrag, der festlegt, was ein Kunde erwarten kann, lässt dem Entwickler die Möglichkeit, ihn nach Belieben umzusetzen, solange er den Vertrag einhält.
und
Eine Schnittstelle ist eine Beschreibung der Aktionen, die ein Objekt ausführen kann. Wenn Sie beispielsweise einen Lichtschalter betätigen, leuchtet das Licht, und es ist Ihnen egal, wie. In der objektorientierten Programmierung ist eine Schnittstelle eine Beschreibung aller Funktionen, die ein Objekt haben muss, um ein "X" zu sein.
und
Ich denke, der schnittstellenbasierte Ansatz ist bedeutend besser. Sie können dann Ihre Abhängigkeiten gut verspotten, und alles ist im Grunde genommen weniger eng miteinander verbunden.
Was ist der Sinn einer Schnittstelle?
Interface + Extension (Mixin) vs Basisklasse
Angesichts der Tatsache, dass der Zweck von Schnittstellen darin besteht, einen Vertrag zu definieren und Ihre Abhängigkeiten lose miteinander zu verknüpfen, wird UnsupportedOperationExceptionder Zweck nicht durch einige Methoden zunichte gemacht ? Es bedeutet, dass ich nicht mehr weitergegeben werden kann Setund nur noch benutze addAll. Vielmehr muss ich wissen, welche Implementierung von Setmir bestanden wurde, damit ich wissen kann, ob ich verwenden kann addAlloder nicht. Das erscheint mir ziemlich wertlos.
Worum geht es also UnsupportedOperationException? Gleicht es nur den alten Code aus und sie müssen ihre Schnittstellen bereinigen? Oder hat es einen sinnlicheren Zweck, den ich vermisse?
src.zipfunktioniert sie hervorragend. Es ist hilfreich, genau zu wissen, welchen Code die JRE manchmal ausführt, und sich nicht auf JavaDoc zu beschränken, was etwas ausführlich sein kann.
addAllinHashSet. Es verschiebt sich zu der Standardimplementierung, inAbstractCollectionder ganz sicher nicht geworfen wirdUnsupportedOperationException.