— Привет, Амиго! И снова маленькая и интересная тема. Тип 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!
— Отлично. Рада, что тебе понравилось. На сегодня закончим.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ