質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

10113閲覧

Nullを返す可能性があるとき、Javadocにはなんて書けばよいか

tadanoosakana

総合スコア30

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/10/26 12:13

編集2015/10/26 22:05

Javaで書いていますが、
メソッドがnullを返す可能性が出てきました。
Javadocにそのことを書いておこうと思うのですが、
どのように記述すれば良いと思われますか?

はじめは @exception タグを使おうかと思いましたが、
そのメソッド内で例外が発生するわけではなく、
戻り値でnullが帰ってきた際に呼び出し元で
nullチェックを行わなかった際に例外が起こると思われるので
この @exception タグは違うと思いました。

どなたか良い方法を教えて下さい。

追記
このメソッドは引数に画像ファイル名を受け取り、
画像ファイル名から画像関連のクラスのインスタンスを生成し、
その参照を返すものなのです。
以前は画像ファイルからの生成に失敗したら、真っ白な矩形の画像を生成し、
とりあえずその画像のインスタンスを返すというようにしていました。
ですが、生成に失敗したことを呼び出し元に伝える必要があると考えたため、
nullを返す可能性があるメソッドにしました。
(呼び出し元でnullを確認してもらい、nullが帰ってきたら、
処理に失敗したということなので、そのメソッドを使う人がエラーメッセージを出すなり、
プログラムを終了させるなりなどの対応ができると考えました。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

標準ライブラリーのメソッドで、実際にnullを返す可能性のあるものを参考にされてはいかがでしょうか。

いくつか例を挙げます。

Map.get - Java SE 8 API ドキュメント
http://docs.oracle.com/javase/jp/8/api/java/util/Map.html#get-java.lang.Object-

戻り値: 指定されたキーがマップされている値。このマップにそのキーのマッピングが含まれていない場合はnull

Throwable.getCause - Java SE 8 API ドキュメント
http://docs.oracle.com/javase/jp/8/api/java/lang/Throwable.html#getCause--

戻り値: このスロー可能オブジェクトの原因。原因が存在しないか不明の場合はnull。

File.listFiles - Java SE 8 API ドキュメント
http://docs.oracle.com/javase/jp/8/api/java/io/File.html#listFiles--

戻り値: この抽象パス名が示すディレクトリ内のファイルおよびディレクトリを示す抽象パス名の配列。配列は、ディレクトリが空の場合は空になる。この抽象パス名がディレクトリを示さない場合、または入出力エラーが発生した場合はnullを返す。

投稿2015/10/26 12:51

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

標準メソッドで null を返すものを幾つかみてみます。

...
戻り値:
指定されたキーがマップされている値。このマップにそのキーのマッピングが含まれていない場合はnull
...

...
戻り値:
存在する場合は、この要素の指定された注釈型の注釈。そうでない場合はnull
...

しかし、自作するメソッドで null を返すのが本当に適切かは再考することをお勧めします。

...
Optionalの利用のメリットはその値はないかもしれないということをコードに明示できることです。上の例では、取得したleftやrightはOptionalなので、気をつけずともemptyの場合の処理の記述を強制させられてしまうのです。プログラムの背景や意思を正確に後続の開発者に伝えるという意味でかなり強力です。コメントに「nullかもしれないから気をつけて」と書くよりずっと伝わります
...

scale や swift では optional という仕様を理解しておくことが必須です。
java でも optional が使えるようになっています。

投稿2015/10/26 14:00

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

戻り値なら@returnが適切ですね。

java

1/** 2 * @return ~ならば{@code null}を返します。 3 */

参考: メソッドの戻り値に関するコメント

投稿2015/10/26 12:20

shiena

総合スコア1825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tadanoosakana

2015/10/28 06:44

この書き方は初めて知りました。 参考にさせてもらいます。
guest

0

意図しないnullを出す原因を修正せず、コンパイルも止めたくないなら、
-1とか、""文字などを代入しておくとかでしょうか?

仕様にもよりますが、とりあえず止まりはしないような気がします。

投稿2015/10/26 12:23

SKYYFISH

総合スコア654

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問