— Привет, Амиго! И снова маленькая и интересная тема. Тип Void.

— А зачем может понадобиться такой тип? Ну, c void-то понятно. Чтобы привести к общему знаменателю функции и процедуры. Теперь у нас нет процедур, зато есть функции, которые возвращают void (ничего).

— Ага. А ты помнишь, недавно Элли тебе рассказывала про интерфейс-шаблон Callable?

— Ага.

— А что туда нужно передать в качестве типа-параметра тоже помнишь?

— Да, тип результата:

Пример задания, которое ничего не делает:
class EmptyJob implements Callable
{
 public String call() throws Exception
 {
  return null;
 }
}

— Ага. А если тебе нужно, чтобы метод call возвращал значение int? Как тогда?

— Теперь я знаю, что для этого есть autoboxing. Я просто передам Integer, и все будет работать как часы:

Пример задания, которое ничего не делает:
class EmptyJob implements Callable
{
 public Integer call() throws Exception
 {
  return null;
 }
}

— Отлично. А если метод ничего не должен возвращать?

— Я понял твою мысль. Тогда мы используем Void как аналог void?

— Ага.

— А не проще сделать просто Object и возвращать null.

— Иногда, но не всегда.

Ты знаешь, что там имелся в виду void, а ты написал Object, но другой программист может этого и не знать и будет думать, а почему это ты возвращаешь null.

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

А когда написано Void то всем сразу понятно, что это – обертка над void, хотя возвращать null все же придётся.

Пример задания, которое ничего не делает:
class EmptyJob implements Callable
{
 public Void call() throws Exception
 {
  return null;
 }
}

— Гм. Действительно, метод, который всегда возвращает null, внушает некоторые сомнения. А метод, который объявлен Void, может это делать без лишних пояснений.

Читабельность кода — прежде всего. Мне нравится Java!

— Отлично. Рада, что тебе понравилось. На сегодня закончим.