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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
android SDKでの詳細エラー情報...
-
VBA Evaluate関数 型が一致しま...
-
エクセルVBAで、条件に一致する...
-
内部クラスを別ファイルに
-
「天声人語」をインターネット...
-
VBAでの[]
-
C#において、同じインスタンス...
-
Vba ListViewの行挿入に関して...
-
パワーポイントのVBAでテキスト...
-
Vbで通常使用するプリンターを...
-
自作のクラスファイルがインポ...
-
ヘッダファイルのインクルード...
-
java swing JLabelの型とは?
-
VBA 同じ名前のオブジェクトを...
-
河合塾のクラス分けについて
-
複数の変数を宣言する時、同時...
-
成人式の後中3のクラスで集まろ...
-
プリコンパイルされたSQL文を取...
-
boolean型のフィールドとゲッタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
【JAVA】与えられた金額を貨幣...
-
連続する「\\」をひとつの「\\...
-
文字列からダブルクオートの削除
-
VB.Net Object型 空かどうか
-
0除算の例外処理ができない!!...
-
VB.NETで16進数が正しいかどう...
-
数字か文字列かを判定する関数
-
例外ってIf文の中に入れますか...
-
C# マルチスレッドにおける例外...
-
スタックオーバーフローとは?
-
String型の日付(2005/11/25)の...
-
Timestamp型への変換について(J...
-
C# UriFormatExceptionの回避
-
ADOによるレコードの追加/更新
-
VBA Evaluate関数 型が一致しま...
-
時間の取得
-
WebClient()以外でネットにアク...
-
C#の捕捉されない例外処理の対...
-
タトゥーや墨を入れる人の共通点
おすすめ情報