Предположим, что у меня есть класс "employee", имеющий объект obj. то как будет выполняться инструкция obj.getClass(). getName()? И каково это должно быть возвращение?
Что делает Class.getName() для данного класса?
Ответ 1
Метод getClass()
получает фактический класс объекта, который может отличаться от класса переменной, удерживающей объект. Метод getName()
возвращает полный пакет плюс имя класса этого класса в виде строки, например:
com.company.project.package.MyClass
Например, следующий код выводит вышеуказанную строку:
package com.company.project.package; class MyClass extends Object { // some definition } Object o = new MyClass(); System.out.println(o.getClass().getName());
Ответ 2
Отказ от ответственности: хотя ответ Эрика верен, он не заполнен.
Короче
Этот метод похож на getCanonicalName() с разницей - он возвращает двоичное имя класса, где каноническая версия возвращает значение null (например, для анонимных классов).
Подробнее
Если этот объект класса представляет ссылочный тип, который не является типом массива, возвращается двоичное имя класса:
String.class.getName()
returns "java.lang.String"
(new Object() {}).getClass().getName()
returns "test.Main$1"
Если этот объект класса представляет примитивный тип или void, тогда возвращаемое имя является строкой, равной ключевому слову Java, соответствующему примитивному типу или пустоте.
byte.class.getName()
returns "byte"
long.class.getName()
returns "long"
Если этот объект класса представляет класс массивов, то внутренняя форма имени состоит из имени типа элемента, которому предшествует один или несколько символов [[], представляющих глубину массива, вложенных:
(new Object[3]).getClass().getName()
returns "[Ljava.lang.Object;"
(new int[3][4][5][6][7][8][9]).getClass().getName()
returns "[[[[[[[I"
Кодирование имен типов элементов выглядит следующим образом:
Element Type Encoding
boolean Z
byte B
char C
class or interface L<classname>;
double D
float F
int I
long J
short S
Официальные документы по этому методу: https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getName--
Ответ 3
Название класса, в вашем случае "сотрудник" или "my.package.employee".