На Java можно будет считать «пустоты» примитивным типом?
-
10-10-2019 - |
Вопрос
Я заметил Eclipse JDT Использование void
как примитивный тип. Анкет Можно ли это считать правильным?
Решение
Я нахожу, что в таких случаях вы не можете победить в спецификации языка Java. Это довольно ясно, что факт, что void
не примитив.
Прежде всего, void
не в Список примитивных типов. Анкет Позже JLS явно заявляет:
Язык программирования Java не позволяет «набрать на пустоту» - void - это не тип http://java.sun.com/docs/books/jls/third_edition/html/statements.html#5989 (акцент мой)
Более того, void
появляется в Список ключевых слов, не список литералов.
А причина что вы видели, что вы сделали, было хорошо объяснил Майкл Боргвардт.
Итак, чтобы ответить на ваше название: нет. В Java, void
не может считаться примитивом. Чтобы ответить на ваше тело: да, код Eclipse JDT верен для того, что ему нужно делать.
Другие советы
Никакая пустота не является примитивным типом. Это просто ключевое слово, чтобы указать, что метод не имеет возвратного значения. Самым близким вы можете прийти, это класс java.lang.void, который из Javadocs описывается как:
Класс void - это неустойчивый класс заполнителей для сохранения ссылки на объект класса, представляющий ключевое слово Java.
Присутствие в JDT - просто для создания AST для кода. Если вы посмотрите на описание значения поля в тех же документах, это говорит:
Введите код для примитивного типа "void". Обратите внимание, что «void» является особенным тем, что его единственное законное использование является типом возврата метода и в качестве буквального типа.
Из Java 6 API документы:
Общественный логический Primitiate ()- определяет, представляет ли указанный объект класса примитивный тип.
Возвращает: правда, если и только если Этот класс представляет собой Примитивный тип
Я проверил для себя:
void.class.getName() // void (OK)
void.class.isPrimitive() // true (??)
Void.class.getName() // java.lang.Void (OK)
Void.class.isPrimitive() // false (OK)
Это ошибка? Я знаю, что пустота нет Примитивный тип (я думаю, это просто ключевое слово), но почему void.class.isprimity () возвращает true?
РЕДАКТИРОВАТЬ: Я думаю, что это должно быть уточнено, поэтому я предложил Java: DOC ошибка 7019906. Анкет По моему мнению, это должно быть:
Public Boolean Isprimity () - определяет, представляет ли указанный объект класса примитивный тип или ключевое слово void.
Возвращает: true, если и только тогда, когда этот класс представляет примитивный тип или ключевое слово void.
По вашей ссылке:
Обратите внимание, что «void» является особенным тем, что его единственное законное использование является типом возврата метода и в качестве буквального типа.
Также обратите внимание, что это класс, касающийся узлов AST, то есть синтаксис языка Java.
В основном, при моделировании языкового синтаксиса, void
Появляется в некоторых из тех же мест, что и примитивные типы, поэтому при представлении синтаксиса в качестве класса Java вы должны классифицировать его аналогичным образом.
Как я знаю, пустота это не примитивный тип. Однако у них есть эта константа в типе класса по причинам размышлений!
Вот то, что написано в Javadoc, на который вы ссылались:
Введите код для примитивного типа "void". Обратите внимание, что "void" специальный В том, что его единственное законное использование - это тип возврата метода и в качестве буквального типа.
Обратите внимание на смелое слово. Я думаю, это все объясняет.