Является ли void типом? - PullRequest
       19

Является ли void типом?

11 голосов
/ 26 сентября 2011

Я не могу ответить полностью "почему мы должны звонить" void"это" тип возврата '? "

Как мне доказать, что " void " является типом?

Ответы [ 8 ]

9 голосов
/ 27 сентября 2011

void не является типом, это также не тип возврата:

в JLS 14,8 вы можете найти примечание об этом типе:

Обратите внимание, что язык программирования Java не допускает «приведение к пустоте» - void не является типом

8 голосов
/ 19 октября 2011

Спецификация языка Java говорит, что :

[...] каждая переменная и каждое выражение имеют тип, который можно определить при компиляциивремя.Тип может быть типом примитива или ссылочным типом.

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

В Void JavaDoc также указаночто void является ключевым словом:

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

Сравните это с Integer JavaDoc :

Класс Integer оборачивает значение примитивного типа int в объекте.Объект типа Integer содержит одно поле с типом int.

Класс Void представляет ключевое слово void ;в то время как класс Integer представляет тип int .

2 голосов
/ 03 октября 2011

Надежда class void объясняет, почему void является типом.

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

public final class Void extends Object
2 голосов
/ 26 сентября 2011

Цитата:

TYPE

общедоступная статическая финальная класс TYPE
Объект Class, представляющий примитивный тип Java void.

Взято из: http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Void.html

Или я неправильно понял вопрос?

1 голос
/ 26 сентября 2011

Любой метод класса должен указывать тип возвращаемого значения. Можно указать ключевое слово 'void', указав, что оно не имеет возвращаемого типа, например:

public void SetPantsSize(int width);

Существует также класс void: http://download.oracle.com/javase/6/docs/api/java/lang/Void.html

1 голос
/ 26 сентября 2011

Да, void - это определенно тип, означающий «ничто». Кстати, вы имеете в виду C (C ++, Objective-C, ...). Не могу сказать ни за один язык, но в C (C ++, Objective-C, ...) void является типом.
Но это особый тип данных. Вы не можете объявить переменную типа void. Это отличается от любых других типов. Но вы можете объявить указатель на void. Функция, возвращающее значение void, означает, что функция не имеет возвращаемого значения или ничего не возвращает. Это боится всех случаев, когда можно использовать тип void.
void * v; / ** объявляет переменную v как указатель на void * /
* v, используемое в качестве левого значения в выражении, может быть присвоено значение любого типа без приведения типа. Вот почему тип void был введен в язык.

Вы обновили свой вопрос, подчеркнув, что спрашивали о Java. В Java нет указателей и функций. Тип void используется в объявлениях методов, не возвращающих ничего.

0 голосов
/ 19 октября 2011

void - это тип на языке Java (вы можете прочитать это непосредственно в Спецификации языка Java). Однако тип void не имеет значений членов, то есть никакого конкретного значения никогда не будет иметь тип void. Поэтому void используется для указания того, что метод не может возвращать значение при вызове (то есть void - это тип "нет значения").

0 голосов
/ 26 сентября 2011

Void - это тип в большинстве языков, и, учитывая типичную систему типов, имеет смысл думать о нем как о типе, который задает «ничто».Вы не указали свой язык, но, например, в C # ключевое слово void соответствует пустому типу .NET framework .

...