getClass()
Methode ist in der Klasse Object mit der folgenden Signatur definiert:
public final Klasse getClass()
Da es nicht definiert ist als static
können Sie ihn nicht innerhalb eines statischen Codeblocks aufrufen. In diesen Antworten finden Sie weitere Informationen: Q1 , Q2 , Q3 .
Wenn Sie sich in einem statischen Kontext befinden, müssen Sie den Klassenliteralausdruck verwenden, um die Klasse zu erhalten, also müssen Sie im Grunde genommen so vorgehen:
Foo.class
Diese Art von Ausdruck wird als Klasse Literale und sie werden erklärt in Java Language Specification Book wie folgt:
Ein Klassenliteral ist ein Ausdruck, der aus dem Namen einer Klasse, einer Schnittstelle, eines Arrays oder eines primitiven Typs, gefolgt von einem `.' und dem Token class, besteht. Der Typ eines Klassenliterales ist Class. Es wird als Class-Objekt für den benannten Typ (oder für void) ausgewertet, wie es durch den definierenden Klassenlader der Klasse der aktuellen Instanz definiert ist.
Informationen zu diesem Thema finden Sie auch unter API-Dokumentation für die Klasse.