「こんにちは、アミーゴ! もう一つ、小さくて興味深いトピックがあります。ボイドタイプについてです。」

「そして、なぜそのような型が必要なのでしょうか? つまり、void については理解しています。関数とプロシージャを整合させるためです。プロシージャはありませんが、void (何も) を返す関数はあります。」

「ええ、でもエリーが最近 Callable インターフェースについて話してくれたことを覚えていますか?」

"はい。"

「そして、型引数として何を渡す必要があるか覚えていますか?」

「はい、戻り値の型は次のとおりです。」

何もしないタスクの例:
class EmptyJob implements Callable
{
 public String call() throws Exception
 {
  return null;
 }
}

「そうです。それで、call メソッドが int を返すようにしたい場合はどうすればよいでしょうか? ではどうすればよいでしょうか?」

「これでオートボックス化があることがわかりました。整数を渡すだけで、すべてが時計のように進みます。」

何もしないタスクの例:
class EmptyJob implements Callable
{
 public Integer call() throws Exception
 {
  return null;
 }
}

「素晴らしいですね。では、メソッドが何も返さなかったらどうなるでしょうか?」

「あなたの言いたいことは分かりました。では、void を void の相手として使いますか?」

「はい。」

「戻り値を Object にして null を返す方が簡単ではないでしょうか?」

「時々ですが、いつもではありません。」

「Object を書いたとき、ここで本当に void を返すつもりだったことはわかっていますが、他のプログラマはそれを知らず、なぜ null を返すのか考えるでしょう。」

「あるいは、メソッドを呼び出すコードは戻り値を期待します。」

「しかし、Void を作成すると、null を返さなければならないにもかかわらず、これが void のラッパーであることがすぐにわかります。」

何もしないタスクの例:
class EmptyJob implements Callable
{
 public Void call() throws Exception
 {
  return null;
 }
}

「うーん。その通りです。常に null を返すメソッドには疑問が生じます。しかし、Void として宣言されたメソッドは、これ以上の説明を必要とせずにこれを実行できます。」

「コードの読みやすさが第一です。私は Java が好きです!」

「よかったです。気に入っていただけてうれしいです。今日はこれで終わりです。」