getName() - gibt den Namen der Entität (Klasse, Schnittstelle, Array-Klasse, primitiver Typ oder void), die durch dieses Class-Objekt dargestellt wird, als String zurück.
getCanonicalName() - gibt den kanonischen Namen der zugrunde liegenden Klasse zurück, wie er in der Java Language Specification definiert ist.
getSimpleName() - gibt den einfachen Namen der zugrundeliegenden Klasse zurück, d. h. den Namen, der ihr im Quellcode gegeben wurde.
package com.practice;
public class ClassName {
public static void main(String[] args) {
ClassName c = new ClassName();
Class cls = c.getClass();
// returns the canonical name of the underlying class if it exists
System.out.println("Class = " + cls.getCanonicalName()); //Class = com.practice.ClassName
System.out.println("Class = " + cls.getName()); //Class = com.practice.ClassName
System.out.println("Class = " + cls.getSimpleName()); //Class = ClassName
System.out.println("Class = " + Map.Entry.class.getName()); // -> Class = java.util.Map$Entry
System.out.println("Class = " + Map.Entry.class.getCanonicalName()); // -> Class = java.util.Map.Entry
System.out.println("Class = " + Map.Entry.class.getSimpleName()); // -> Class = Entry
}
}
Ein Unterschied besteht darin, dass Sie bei Verwendung einer anonyme Klasse können Sie einen Nullwert erhalten, wenn Sie versuchen, den Namen der Klasse mit der Methode getCanonicalName()
Eine weitere Tatsache ist, dass getName()
Methode verhält sich anders als die getCanonicalName()
Methode für innere Klassen . getName()
verwendet einen Dollar als Trennzeichen zwischen dem kanonischen Namen der umschließenden Klasse und dem einfachen Namen der inneren Klasse.
Mehr Informationen über Abrufen eines Klassennamens in Java .