「こんにちは、アミーゴ! もう一つ、小さくて興味深いトピックがあります。ボイドタイプについてです。」
「そして、なぜそのような型が必要なのでしょうか? つまり、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 が好きです!」
「よかったです。気に入っていただけてうれしいです。今日はこれで終わりです。」
GO TO FULL VERSION