Ответ 1
Ничего. Это встроенная функция языка (литерал класса), который выглядит как публичное статическое конечное поле.
Любой класс в java имеет .class, я хочу знать .class - статический метод или нет? Или это общедоступное статическое поле?
boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));
Ничего. Это встроенная функция языка (литерал класса), который выглядит как публичное статическое конечное поле.
Когда вы пишете .class
после имени класса, он ссылается на объект Class
, который представляет данный класс. .class
используется, когда экземпляр класса отсутствует.
Например, если ваш класс Print
(рекомендуется, чтобы имя класса начиналось с прописной буквы), тогда Print.class
- это объект, который представляет класс Print во время выполнения. Это тот же объект, который возвращается методом getClass()
любого (прямого) экземпляра Print.
Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());
https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.8.2
Это не так. Это выражение оценивается во время компиляции для объекта Class
для этого класса.