Verwenden von .getclass () für eine Schnittstelle

8

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.

    
Erik 01.11.2011, 02:18
quelle

1 Antwort

11

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:

%Vor%     
G_H 01.11.2011, 02:22
quelle

Tags und Links