Void
— это специальный класс, обычно используемый только для отражения. Его основное назначение — представлять возвращаемый тип метода void. Из javadoc для Void
:
Класс Void — это нереальный класс-заполнитель для хранения ссылки на объект Class, представляющий ключевое слово Java void.
Поскольку класс Void
не может быть создан, единственным значением, которое вы можете передать методу с параметром типа Void
, например handle(Void e)
, является null
.
Это официальная версия событий, но для тех, кто заинтересован, несмотря на заявления об обратном в javadoc Void
, вы можете фактически создать экземпляр Void
:
Constructor<Void> c = Void.class.getDeclaredConstructor();
c.setAccessible(true);
Void v = c.newInstance(); // Hello sailor!
Тем не менее, я видел, что Void
"полезно" используется в качестве универсального типа параметра, когда вы хотите указать, что тип "игнорируется", например:
Callable<Void> ignoreResult = new Callable<Void> () {
public Void call() throws Exception {
// do something
return null; // only possible value for a Void type
}
}
Общий параметр Callable
является возвращаемым типом, поэтому когда Void
используется таким образом, это четкий сигнал читателям кода о том, что возвращаемое значение не важно, даже если требуется использование интерфейса Callable
, например, при использовании Executor
фреймворк.
person
Bohemian♦
schedule
25.12.2012
Void
- person Rohit Jain   schedule 25.12.2012public void handle(Void e)
только с помощью вызоваhandle(null)
- person M. Atif Riaz   schedule 25.12.2012