Eine konkrete Klasse, die an Schnittstelle angeschlossen ist, betrachtet JVM sie immer noch als eine konkrete Klasse?Concrete Class implementiert eine Schnittstelle. Später zu Interface eingegeben. Wie erkennt JVM die Typcasted-Instanz?
Antwort
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.
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.
- 1. C# -Compiler erkennt nicht, dass eine Klasse eine Schnittstelle implementiert
- 2. Wie implementiert eine Schnittstelle die Funktionalität?
- 3. Wer implementiert die OS-Schnittstelle in Java?
- 4. Wie implementiert man die Schnittstelle in Ada?
- 5. Java - Interface, eine Schnittstelle instanziieren?
- 6. Eine Klasse eine Schnittstelle implementiert, die eine ENUM
- 7. TypeScript - Überprüfen, ob Klasse eine Schnittstelle implementiert
- 8. Wie implementiert man die Java-vergleichbare Schnittstelle?
- 9. Wie generisches Objekt in Java implementiert wird, implementiert eine Schnittstelle
- 10. Unterklassen einer Klasse, die eine generische Schnittstelle implementiert
- 11. Tapestry5: Kein Dienst implementiert die Schnittstelle org.springframework.context.ApplicationContext
- 12. Wie implementiert man die Override-Methode in TypeScript Interface?
- 13. Innere Klasse innerhalb einer Schnittstelle, die dieselbe Schnittstelle implementiert, was erreichen wir dadurch?
- 14. create object of abstract class und interface
- 15. "Interface nicht implementiert", wenn Typ Abgeleitet Returning
- 16. Wie implementiert man eine Schnittstelle explizit mit einer virtuellen Methode?
- 17. Wie überprüft man, ob ein Objekt eine Schnittstelle implementiert?
- 18. Injecting Interface on class (Laravel-Paket)
- 19. Prüfe, ob struct eine gegebene Schnittstelle implementiert
- 20. Wie überprüfe ich, ob ein Interface-Objekt eine andere Schnittstelle implementiert?
- 21. Interface Casting vs. Class Casting
- 22. AutoMapper Die Schnittstelle hat eine widersprüchliche Eigenschaft ID Parametername: Interface
- 23. Wie implementiert man eine C# -Schnittstelle in F #?
- 24. C# Interface-Vererbung zu Abstrakte Klasse
- 25. Wie ein C++ sagen mixin die Schnittstelle implementiert es
- 26. Warum implementiert die Klasse LinkedHashMap die Map-Schnittstelle?
- 27. Wie erstelle ich ein Objekt, das eine Schnittstelle implementiert?
- 28. Eclipse erkennt JVM 1.8 nicht
- 29. Generieren von .class-Datei für JVM
- 30. Wie findet welche Klasse (n) implementiert eine Schnittstelle (NET)