На Java можно будет считать «пустоты» примитивным типом?

StackOverflow https://stackoverflow.com/questions/4681568

Вопрос

Я заметил 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" специальный В том, что его единственное законное использование - это тип возврата метода и в качестве буквального типа.

Обратите внимание на смелое слово. Я думаю, это все объясняет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top