2 Stimmen

Wer/Was implementiert Schnittstellen, die ich direkt verwenden kann?

Beim Erlernen von JDBC bin ich auf verschiedene Schnittstellen gestoßen - Connection, Statement, ResultSet usw...

Bedeutet dies, dass einige Klassen irgendwo, vor mir verborgen, diese Schnittstellen implementieren und ihre Referenzen bereitstellen, wenn ich sie brauche? Liegt das daran, dass sie je nach verwendetem Treiber unterschiedlich implementiert werden müssen?

2voto

Johannes Weiss Punkte 49967

Ja, Sie haben Recht. Die Implementierung für diese Schnittstellen ist in den JDBC-Treibern der Datenbanken zu finden.

1voto

Bill the Lizard Punkte 384619

Im speziellen Fall der JDBC-Treiber haben Sie recht. Die einzelnen Treiber-Gefäße enthalten die Implementierungen der erforderlichen Schnittstellen.

In anderen Fällen, wie zum Beispiel Kalender für ein bekanntes Beispiel, können Sie die Dokumentation für conocido Sub-Interfaces und direkte Implementierungen. Natürlich werden in der Dokumentation von Sun nur die Unterschnittstellen und Unterklassen aufgeführt, die in den Kern-Java-Bibliotheken vorhanden sind. Sie können viele andere Implementierungen in Bibliotheken von Drittanbietern finden, wie z.B. Apache Commons oder in Ihrem eigenen Code.

0voto

Konrad Rudolph Punkte 503837

Liegt das daran, dass sie je nach verwendetem Treiber unterschiedlich implementiert werden müssen?

Zum Beispiel. Es ist eine allgemeine Best Practice, auf eine Schnittstelle statt auf eine Implementierung (= Klasse, in diesem Zusammenhang) zu programmieren, und zwar aus mehreren Gründen. Einer davon wurde bereits von Ihnen erwähnt: verwandte, aber unterschiedliche Implementierungen können eine gemeinsame Schnittstelle nutzen. Ein weiterer Punkt ist, dass eine bestimmte Implementierung hinter den Kulissen geändert werden kann, ohne dass auch die Schnittstelle geändert werden muss: Nehmen wir an, die nächste Implementierung des Treibers muss eine andere Klasse verwenden. Es reicht aus, die bestehende Schnittstelle zu implementieren.

Stellen Sie sich nun vor, dass der Code anstelle von Schnittstellen mit Klassentypen arbeitet. Wenn sich nun die Implementierung ändert, müssten diese Schnittstellen ebenfalls geändert werden. Das würde bedeuten, dass jeder Nutzer (auch Sie) der API seinen Code ebenfalls ändern müsste!

0voto

oxbow_lakes Punkte 131223

Wie Johannes sagt, implementieren die eigentlichen DB-Treiber diese Klassen. Der Punkt ist, dass Sie den Treiber wechseln können, ohne tatsächlich Änderungen an Ihrem Code vorzunehmen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X