Любой класс в java имеет .class, я хочу знать .class - статический метод или нет? Или это публичное статическое поле?Является ли класс классом или полем?
boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));
Любой класс в java имеет .class, я хочу знать .class - статический метод или нет? Или это публичное статическое поле?Является ли класс классом или полем?
boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));
Не имеет значения.
Это встроенная функция языка (литерал класса), который выглядит как публичное статическое конечное поле.
В частности, * class literal *: http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#250782 –
https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.8.2
Это ни. Это выражение, вычисляемое во время компиляции, для объекта Class
для этого класса.
Tsk, используя устаревшее второе издание. ;-) –
Третье (текущее) издание, вероятно, является лучшей ссылкой; он также предоставляет более подробную информацию, чем 2-е изд. –
Достаточно честно, я отредактирую. – Viruzzo
Когда вы пишете .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());
экземпляр класса не совпадает с объектом, представляющим тип класса – Val
Я прочитал и перечитал свой вопрос три раза, и я боюсь, что я не могу сделать какой-то смысл из этого. – NPE
@aix: В Java все классы (например, 'String') имеют * [класс литерала] (http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#250782) * ('.class'), который является экземпляром [' Class'] (http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html) для этого класса. Например, 'String.class == Class.forName (" java.lang.String ")' (запрет краевых случаев вокруг загрузчиков классов и т. Д.). –
@ T.J.Crowder: Oh. Я думал, что он говорит о файлах класса * :-) – NPE