2011-01-16 4 views

Antwort

1

Beim Erstellen einer Zuweisung wird der Typ der Zuweisung basierend auf dem angegebenen Typ abgeleitet. Z.B. MyInterface mi = neu MyImplementation(); mi wird in diesem Fall als Schnittstelle typisiert, bezieht sich aber auf die Implementierung. Die JVM wird wissen, dass die Instanz auf eine Implementierung verweist, wenn Sie eine Instanz von.

1

Bevor ich die spezifische Frage beantworte, beachte, dass Implementierungen von Schnittstellen überall dort übergeben werden können, wo der Schnittstellentyp akzeptiert wird. Wenn Impl Interface implementiert, ist Impl isA interface. Warum würden Sie also in den Interface-Typ umwandeln? Es wäre völlig unnötig. Ich habe Situationen gesehen, in denen Sie zu einer bestimmten Implementierung wechseln würden, aber nicht von der Implementierung zur Schnittstelle, und selbst diese Situationen sind heikel.

Ich musste dies mit dem folgenden Code überprüfen, aber nein, wenn Sie eine Schnittstellenimplementierung haben, und Sie es in die Schnittstelle umwandeln, wird alles, was die Implementierung erfordert einen Kompilierzeitfehler erhalten, wenn Sie versuchen, als zu übergeben Schnittstelle. Hier ist der Code

Beispiel ist nur eine einfache Schnittstelle mit einer Methode, Code nicht gezeigt.

Beachten Sie auch, dass mein Code die Frage beantwortet, es tut viele Dinge falsch - Sie würden Code in einer professionellen Umgebung (oder Sie sollten nicht zumindest) nicht sehen. Der Punkt der Schnittstellen ist so, dass Sie das Verhalten definieren und nur ein Objekt übergeben können, das diesem Verhalten entspricht. Wenn Sie also keine Methode schreiben, die eine Implementierung akzeptiert, würden Sie eine Methode schreiben, die die Schnittstelle akzeptiert, an die Sie alles übergeben können, das die Implementierung bereitgestellt hat. Auf diese Weise können Sie verschiedene Implementierungen an die gleiche Methode übergeben, wenn dies erforderlich ist.

Verwandte Themen