В Java можно ли считать" void " примитивным типом?

Я заметил затмение JDT использует void как примитивный тип. Можно ли считать это правильным?

6 ответов


Я считаю, что в таких случаях вы не можете превзойти переход к спецификации языка Java. Это довольно ясно о том, что void не примитивный.

во-первых, void не в список примитивных типов. Позже JLS явно заявляет:

язык программирования Java не позволяет "привести к void" -void не является типом http://java.sun.com/docs/books/jls/third_edition/html/statements.html#5989 (Курсив мой)

кроме того, void появляется список ключевых слов, а не список литералов.

на причина что ты видел, что ты был пояснил, красиво Майкл Borgwardt.

Итак, чтобы ответить на ваш заголовок: нет. В Java, void нельзя считать примитивной. Чтобы ответить вашему телу: Да, Код Eclipse JDT верен для того, что ему нужно сделать.


no void не является примитивным типом. Это просто ключевое слово, указывающее, что метод не имеет возвращаемого значения. Ближе всего вы можете подойти к java.ленг.Класс Void, который из Javadocs описывается как:

пустоту классе является uninstantiable класс заполнитель для хранения ссылки к объекту класса, представляющему Ключевое слово Java void.

присутствие в JDT-это просто создание ASTs для кода. Если вы посмотрите на значение поля описание в тех же документах говорится:

введите код для примитивного типа "пустой." Обратите внимание, что "void" является особенным в что его единственное законное использование метод возвращает тип и как тип буквальный.


Из Java 6 API docs:

public boolean isPrimitive() - Определяет, если указанный класс объект представляет тип примитива.

Returns: true if and только если этот класс представляет собой примитивного типа

Я проверил на себе:

void.class.getName() // void (OK)
void.class.isPrimitive() // true (??)
Void.class.getName() // java.lang.Void (OK)
Void.class.isPrimitive() // false (OK)

это ошибка ? Я знаю, что пустота не примитивный тип (я думаю, что это просто ключевое слово), но почему пустоту.класс.isPrimitive() возвращает true ?

изменить: Я думаю, что это должно быть разъяснено, поэтому я предложил java: doc bug 7019906. На мой взгляд, это должно быть:

public boolean isPrimitive() - Определяет, если указанный класс объект представляет примитивный тип или ключевое слово void.

возвращает: true, если и только если это класс представляет примитивный тип или ключевое слово пустота.


из вашей ссылки:

обратите внимание, что "void" является особенным в том, что его единственное законное использование метод возвращает тип и как тип буквальный.

обратите внимание также, что это класс, связанный с узлами AST, т. е. синтаксисом языка Java.

в основном, при моделировании синтаксиса языка, void появляется в некоторых из тех же мест, что и примитивные типы, поэтому при представлении синтаксиса как класса Java вы должны классифицировать его аналогично.


Как я знаю, void это не примитивный тип. Однако они имеют эту константу в типе класса по соображениям отражения!


вот что написано в javadoc, на который вы ссылались:

введите код для примитивного типа "void". Обратите внимание, что "void" - это специальные в том, что его единственное законное использование - как тип возврата метода и как литерал типа.

обратите внимание на жирное слово. Думаю, это все объясняет.