Наиболее распространенное использование Void
предназначено для отражения, но это не единственное место, где оно может быть использовано.
void
- это ключевое слово, которое означает, что функция не приводит к значению.
java.lang.Void
является ссылочным типом, то справедливо следующее:
Void nil = null;
(До сих пор это не интересно ...)
Как тип результата (функция с возвращаемым значением тип Void
) это означает, что функция * всегда * возвращает null
(она не может вернуть ничего, кроме null
, потому что у Void
нет экземпляров).
Void function(int a, int b) {
//do something
return null;
}
Почему бы мне нравится функция, которая всегда возвращает нуль?
Перед изобретением дженериков у меня не было чехла для Void
.
С дженериками есть несколько интересных случаев. Например, Future<T>
является держателем для результата асинхронной операции, выполняемой другим потоком. Future.get
вернет рабочее значение (типа T
) и будет блокироваться до тех пор, пока не будет выполнено вычисление.
Но ... Что, если нечего возвращать? Простой: используйте Future<Void>
. Например, в Google App Engine служба Asyncronous Datastore Service delete
операция возвращает будущее . When
get() is invoked on that future,
null` возвращается после удаление завершено. Можно написать аналогичный пример с Callable.
Другой вариант использования - Map
без значений, то есть Map<T,Void>
. Такая карта ведет себя как Set<T>
, тогда она может быть полезна, когда нет эквивалентной реализации Set
(например, нет WeakHashSet
, тогда можно использовать WeakHashMap<T,Void>
).
Благодаря Луи Wasserman.Void.Type можно сказать, "примитивный тип" или любую вещь – user1357722
Подождите, что? Это не правда. 'Void.TYPE' _only_ означает' void'. Это не C. –
Итак, зачем определять класс Void вместо void?. Если любое неправильное извинение – user1357722