Самое распространенное использование Void
— отражение, но это не единственное место, где его можно использовать.
void
— это ключевое слово, означающее, что функция не возвращает значение.
java.lang.Void
является ссылочным типом, то допустимо следующее:
Void nil = null;
(пока не интересно...)
Тип результата (функция с возвращаемым значением типа Void
) означает, что функция *всегда* возвращает null
(она не может возвращать ничего, кроме null
, т.к. Void
не имеет экземпляров).
Void function(int a, int b) {
//do something
return null;
}
Почему мне нужна функция, которая всегда возвращает значение null?
До изобретения дженериков у меня не было варианта использования Void
.
С дженериками бывают интересные случаи. Например, Future<T>
— это держатель результата асинхронной операции, выполненной другим потоком. Future.get
вернет значение операции (типа T
) и будет заблокировано до тех пор, пока не будет выполнено вычисление.
Но... что, если возвращать нечего? Просто: используйте Future<Void>
. Например, в Google App Engine служба асинхронного хранилища данных delete
возвращает Future<Void>
. Когда get()
вызывается для этого будущего, null
возвращается после завершения удаления. Можно написать аналогичный пример с Callable с.
Другой вариант использования — Map
без значений, то есть Map<T,Void>
. Такая карта ведет себя как Set<T>
, тогда она может быть полезна, когда нет эквивалентной реализации Set
(например, нет WeakHashSet
, тогда можно было бы использовать WeakHashMap<T,Void>
).
person
Javier
schedule
21.03.2013
Null
- person Josh   schedule 03.07.2017