„Cześć, Amigo! Mam dla ciebie kolejny mały i interesujący temat. Typ Pustki”.

„A po co ci taki typ? Mam na myśli, że rozumiem pustkę: ma ona na celu wyrównanie funkcji i procedur. Nie mamy procedur, ale mamy funkcje, które zwracają pustkę (nic)”.

„Tak, ale czy pamiętasz, że Ellie niedawno powiedziała ci o interfejsie Callable?”

"Tak."

„A czy pamiętasz też, co musisz przekazać jako argument typu?”

„Tak, typ zwracanej wartości:”

Przykład zadania, które nic nie robi:
class EmptyJob implements Callable
{
 public String call() throws Exception
 {
  return null;
 }
}

„Dobrze. A co, jeśli chcesz, aby metoda wywołująca zwracała int? Co wtedy?”

„Teraz wiem, że jest do tego autoboxing. Po prostu przekazałbym liczbę całkowitą i wszystko pójdzie jak w zegarku:”

Przykład zadania, które nic nie robi:
class EmptyJob implements Callable
{
 public Integer call() throws Exception
 {
  return null;
 }
}

„Wspaniale. A co jeśli metoda nic nie zwróci?”

„Rozumiem, o co ci chodzi. Więc używamy Pustki jako odpowiednika Pustki?”

"Tak."

„Czy nie byłoby łatwiej po prostu uczynić zwracaną wartość obiektem, a następnie zwrócić wartość null?”

„Czasami, ale nie zawsze”.

„Wiesz, że naprawdę chciałeś zwrócić tutaj wartość void, kiedy pisałeś Object, ale inny programista może tego nie wiedzieć i pomyśli, dlaczego zwracasz wartość null”.

„Albo kod wywołujący metodę będzie oczekiwał wartości zwracanej”.

„Ale kiedy piszesz Void, wszyscy natychmiast rozumieją, że jest to opakowanie dla void, mimo że nadal musisz zwrócić wartość null”.

Przykład zadania, które nic nie robi:
class EmptyJob implements Callable
{
 public Void call() throws Exception
 {
  return null;
 }
}

„Hmm. Masz rację. Metoda, która zawsze zwraca wartość null, rodzi pytania. Ale metoda zadeklarowana jako Void może to zrobić bez dalszych wyjaśnień”.

„Czytelność kodu jest najważniejsza. Lubię Javę!”

„Świetnie. Cieszę się, że ci się podoba. Na dzisiaj skończyliśmy”.