
No.1ベストアンサー
- 回答日時:
null は参照型ならば任意の型の代わりに使える特殊な型の値です。
したがって、問題のメソッドが参照型を返すならば代わりに null を返すのは問題ありません。http://docs.oracle.com/javase/specs/jls/se7/html … (Java Language Specification)
http://www.y-adagio.com/public/standards/tr_java … (上記の日本語訳)
なお、当然プリミティブ型を返すメソッドで null を返すことはできません。
No.2
- 回答日時:
nullは、特別の型を持ち、非常に特殊な動作をします。
単純に言えば、全ての型に自動的に変換され、どんな型としても扱える特別なnull型と言う型がある。と考えれば、すっきりするでしょうか。
このnull型は、唯一の値として、nullを持ちます。この型の生成には、nullリテラルを使うのが唯一の手段です。
全ての型に対して、自動変換を持ちますので、どんな型にでも代入できます。
ただし、nullが代入されたインスタンスに対しては、nullチェック以外のいかなるアクセスも出来ません。これに違反すると、NullPointerException例外が発生します。
もし、nullを返り値に使用するのであれば、そのメソッドを呼び出すルーチンでは、nullが帰ってきていないかどうかを一番にチェックしないといけません。
上手に使えば、「返り値が存在しない」・「何らかの理由で返り値が生成できない。」、そして、推奨は出来ませんが、「エラーが発生して正常な返り値が提供できない」等のレスポンスを返す、適切な、時として唯一の手段となります。(最後のエラーに関しては、本来は、例外を使う方が綺麗に作れます。)
ただし、呼び出す側で、nullが帰ってきたかどうかをわざわざ調査する必要がありますから、nullを返す可能性がある時は、必ずドキュメント化(例えばコメント・仕様書など)しておいてくださいね。後で、そのメソッドを使った時に、NullPointerException例外で頭を抱える羽目になります。(単純にif文を追加するだけで済めば良いですが、入れ子になった複雑な式を作った時に、これやられると、愚痴りたくなります(苦笑))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.Net Object型 空かどうか
-
VBA Evaluate関数 型が一致しま...
-
VB.NETで16進数が正しいかどう...
-
VBA 400エラー 1004エラー
-
C#の捕捉されない例外処理の対...
-
C# マルチスレッドにおける例外...
-
Javaで文字列をゼロ埋め(ゼロパ...
-
コンストラクタでの例外は不可...
-
Timestamp型への変換について(J...
-
【JAVA】与えられた金額を貨幣...
-
変数名の付け方
-
private static という変数の修飾
-
エクセルVBAで、条件に一致する...
-
レコード件数の表示
-
「インスタンス」の意味をわか...
-
【Java】入力した西暦→和暦に変...
-
複数の変数を宣言する時、同時...
-
VB.NET getとsetの概念がわかり...
-
Excelで =EMBED("Acrobat Docu...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
【JAVA】与えられた金額を貨幣...
-
VB.Net Object型 空かどうか
-
時間の取得
-
VBA Evaluate関数 型が一致しま...
-
連続する「\\」をひとつの「\\...
-
C#の捕捉されない例外処理の対...
-
Excelでのエラー
-
ファイルダイアログを開いた時...
-
Timestamp型への変換について(J...
-
C# マルチスレッドにおける例外...
-
nullで、return出来るのはどん...
-
例外ってIf文の中に入れますか...
-
if文が通りません。。。
-
ブックマークレットについて
-
Javaで文字列をゼロ埋め(ゼロパ...
-
数字か文字列かを判定する関数
-
VC++におけるCStringの変換
-
JSPからのパラメータチェック
-
C# の例外処理について
おすすめ情報