getName () - возвращает имя объекта (класс, интерфейс, класс массива, тип примитива или void), представленного этим объектом класса, в виде строки.
getCanonicalName () - возвращает каноническое имя базового класса, как определено в Спецификации языка Java.
getSimpleName () - возвращает простое имя базового класса, то есть имя, которое было дано в исходном коде.
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
}
}
Одно из отличий состоит в том, что если вы используете анонимный класс, вы можете получить нулевое значение при попытке получить имя класса, используяgetCanonicalName()
Другой факт заключается в том, что getName()
метод ведет себя иначе, чем getCanonicalName()
метод для внутренних классов . getName()
использует доллар в качестве разделителя между каноническим именем включающего класса и простым именем внутреннего класса.
Чтобы узнать больше о получении имени класса в Java .