Eine Klasse ist eine "Bluprint" des Objekts. Die Instanz ist ein Objekt.
Wenn wir haben
public class SomeClass {
int a;
SomeClass(int a) {
this.a = a
}
}
Können wir eine Instanz dieser Klasse haben
SomeClass c = new SomeClass(10);
c
ist eine Instanz der Klasse. Es hat einen Integer a
mit dem Wert 10
.
Das Objekt SomeClass.class
repräsentiert eine Klasse
.
Hier ist SomeClass.class
ein Objekt
des Typs Klasse
, das die Information enthält, dass SomeClass
ist
- eine konkrete Klasse mit
- einem Konstruktor
-
mit einem Integer-Mitgliedsvariablen
und viele weitere Metadaten
über die Klasse SomeClass
. Beachten Sie, dass es keinen Wert für a
hat.
Sie sollten get(c)
verwenden, falls Sie etwas mit einer Instanz von c
planen, wie zum Beispiel den Aufruf von c.a
oder anderen nützlichen Funktionen zur Manipulation/Abfrage von Daten der Instanz.
Sie sollten get(SomeClass.class)
verwenden, wenn das Ergebnis des Abrufs auf der Tatsache basiert, dass das Argument ein bestimmter Klassentyp ist. Zum Beispiel, wenn dies eine Methode auf einer Registry
-Klasse ist, die eine Map enthält, die eine Implementierungsklasse
basierend auf dem übergebenen Klassentyp abruft.