Класс java.lang.Class имеет личное поле имя . Я пытаюсь получить значение этого поля для разных экземпляров Class, но когда дело доходит до Integer.class , возвращаемое значение равно нулю. Вот пример кода:
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) throws Throwable {
Class<Object> objectCls = Object.class;
Class<Integer> integerCls = Integer.class;
Class<Class> classCls = Class.class;
Field nameField = classCls.getDeclaredField("name");
nameField.setAccessible(true);
System.out.println(nameField.get(objectCls));
System.out.println(nameField.get(integerCls));
System.out.println(nameField.get(classCls));
}
}
Вывод будет:
java.lang.Object
null
java.lang.Class
Также я попытался выполнить с онлайн-компиляторами, которые использовали JDK 9 и 10, и это было хорошо. Так что проблема в том, когда я выполняю этот код с JDK 8.