Das ist wahrscheinlich eine sehr einfache Frage. Hey, ich bin ein Student und relativ neu in Java und ich studiere gerade für eine Zwischenprüfung, die ich morgen habe. Eine der Übungsfragen, auf die ich mich festhalte, ist, was passiert, wenn du etwas wie:
hast System.out.println(interface1.getClass().getName());
interface1
wurde als interface1 = class1
deklariert. Ich bin mir ziemlich sicher, dass es "class1" und nicht "interface1" drucken würde, weil interface1
kein Klassenrecht ist? aber ich bin mir nicht sicher, wie die Frage auch sagt, dass, wenn es einen Kompilierzeitfehler produziert, dann sag es so. Unser Professor ist dafür bekannt, uns zu betrügen und mehr als einmal habe ich ein Quiz zurückbekommen und war immer noch verwirrt, warum ich ein Problem falsch verstanden habe.
Es liegt nicht daran, dass es eine Schnittstelle ist, die Sie class1
erhalten, sondern weil getClass()
in die Laufzeitklasse der Instanz aufgelöst wird. Da Sie es als class1
erstellt haben, ist dies der Laufzeittyp. Gibt keinen Fehler bei der Kompilierung.
Ein Class
-Objekt für eine Schnittstelle kann über Reflektion abgerufen werden.
Alternativ können Sie die Klasse auch direkt über das Schlüsselwort class
aufrufen:
Tags und Links java