Ermitteln des Klassennamens in Java

  1. Ermitteln des Klassennamens mit class.getSimpleName() in Java
  2. Ermitteln des Klassennamens einer anonymen Klasse mit getName()
  3. Name der Klasse mit Thread.currentThread().getStackTrace()[1].getClassName() abrufen

In diesem Tutorial erfahren Sie, wie Sie den Klassennamen in Java mithilfe von vier Methoden ermitteln. Es gibt viele Fälle, in denen wir den Klassennamen in Java abrufen möchten.

Ermitteln des Klassennamens mit class.getSimpleName() in Java

Dies ist die am häufigsten verwendete Methode, um den Namen einer Klasse zu erhalten. Im folgenden Beispiel haben wir zwei Klassen: GetClassName mit der Methode main() und eine weitere Klasse ist ExampleClass.

In der Klasse GetClassName verwenden wir ExampleClass.class, um die Informationen der Klasse zu erhalten. Es gibt eine Class-Instanz vom Typ ExampleClass zurück. Jetzt können wir getSimpleName() mit der classNameInstance aufrufen, die nur den Klassennamen als String zurückgibt.

public class GetClassName {
    public static void main(String[] args) {

        Class<ExampleClass> classNameInstance = ExampleClass.class;
        String className = classNameInstance.getSimpleName();
        System.out.println(className);

    }
}

class ExampleClass {
    private void exampleFun() {
        System.out.println("Just a function in a class");
    }
}

Ausgabe:

ExampleClass

Ermitteln des Klassennamens einer anonymen Klasse mit getName()

Eine innere Klasse ohne Namen wird als anonyme Klasse bezeichnet. In diesem Beispiel lernen wir, wie man einen Klassennamen erhält, wenn er anonym ist, oder prüft, ob eine Klasse eine anonyme Klasse hat. Unten erstellen wir ein Interface Example, um die anonyme Klasse zu instanziieren. In GetClassName instanziieren wir die Klasse ohne Namen über das Interface und implementieren die Funktion printMessage().

Um den Klassennamen zu erhalten, verwenden wir example.getClass(), aber da es keinen Namen der Klasse gibt, erhalten wir eine Instanz vom Typ Class<?>. Dann verwenden wir classNameInstace, um getName() aufzurufen, das den Namen der Klasse zurückgibt. Wie die Ausgabe zeigt, erhalten wir den Elternklassennamen GetClassName mit angehängtem $1, der die anonyme Klasse repräsentiert.

interface Example {
    void printMessage();
}

public class GetClassName {
    public static void main(String[] args) {

        Example example = new Example() {
            @Override
            public void printMessage() {

                System.out.println("This is an anonymous inner class");
            }
        };

        Class<?> classNameInstance = example.getClass();

        String className = classNameInstance.getName();

        System.out.println(className);

    }
}

Ausgabe:

GetClassName$1

Name der Klasse mit Thread.currentThread().getStackTrace()[1].getClassName() abrufen

Im letzten Beispiel verwenden wir die Klasse Thread, um den aktuell laufenden Thread mit currentThread() abzurufen, der uns Zugriff auf den Stack-Dump und alle Aufrufe im Thread gibt. getStackTrace() gibt ein Array von Stack-Elementen zurück, von dem wir das zweite Element des Arrays erhalten und getClassName() aufrufen, um den Klassennamen des Aufrufs zu erhalten.

public class GetClassName {
    public static void main(String[] args) {

        String simpleClassName = Thread.currentThread().getStackTrace()[1].getClassName();

        System.out.println("Class name: " + simpleClassName);

    }
}

Ausgabe:

Class name: GetClassName

Verwandter Artikel - Java Class

  • super auf Java
  • classpath in Java festlegen