teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

fix dots?

2015/02/28 11:18

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
File without changes

3

add extra link

2015/02/28 11:18

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  > javaでnullチェックを行うメリットとはなんでしょうか?
2
2
  どちらかといえば「Javaではnullチェックをしなければならない」です。nullチェックなしでメソッド呼び出しを行うと、`NullPointerException`例外がスローされます。(メリットがあるからではなく、必要なので仕方なくチェックする。)
3
+ おまけ:[nullを使うのはやめよう](http://qiita.com/Amothic/items/525e9d3a2a8f6e7f3f7e)
3
4
 
4
5
  ```
5
6
  List result = getAwesomeData();

2

refine

2015/02/25 08:23

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,23 +1,23 @@
1
1
  > javaでnullチェックを行うメリットとはなんでしょうか?
2
- どちらかといえば「Javaではnullチェックをしなければならない」という感じです。nullチェックなしでメソッド呼び出しを行うと、`NullPointerException`例外がスローされます。(メリットがあるからではなく、必要なので仕方なくチェックする。)
2
+ どちらかといえば「Javaではnullチェックをしなければならない」です。nullチェックなしでメソッド呼び出しを行うと、`NullPointerException`例外がスローされます。(メリットがあるからではなく、必要なので仕方なくチェックする。)
3
3
 
4
4
  ```
5
- List r = getAwesomeData();
5
+ List result = getAwesomeData();
6
+ // メソッド仕様はドキュメントを読まないとわからない
6
- // メソッドの戻り値は有効なリストかもしれないしnullかもしれない
7
+ // 戻り値は有効なリストかもしれないしnullかもしれない
7
- // どのようなメソッド仕様なのかはドキュメントを読まないとわからない
8
- System.out.println("size=" + r.size()); // nullの場合はNullPointerException発生!
8
+ System.out.println("size=" + result.size()); // nullの場合はNullPointerException発生!
9
9
  ```
10
10
 
11
11
  > またjava8で追加されたoptional型、nullチェックを強制するとはどういう意味なんでしょうか?
12
12
  Optional型、正確には`java.util.Optional<T>`クラスは、ソースコード上で「中身が空(empty)かもしれない変数」を明確にし、「プログラマにチェック処理を忘れさせない」ための仕組みです。特にメソッド戻り値型に利用すると効果的です。
13
13
 
14
14
  ```
15
- Optional<List> r = getAwesomeData();
15
+ Optional<List> result = getAwesomeData();
16
- // 戻り値は「無効値かもしれないリスト型」とはっきりわかる
16
+ //ソース上で戻り値は「無効値かもしれないリスト型」とわかる
17
17
 
18
- // r.size();とは呼び出せない(コンパイルエラー)
18
+ // result.size();とは呼び出せない(コンパイルエラー)
19
19
  // 有効なリストならその要素数を表示する、無効値ならなにもしない
20
- r.ifPresent(x -> { System.out.println("size=" + x.size()); });
20
+ result.ifPresent(list -> { System.out.println("size=" + list.size()); });
21
21
  ```
22
22
 
23
23
  下記リンクも参考になるかと思います。

1

refine

2015/02/25 04:53

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -5,21 +5,22 @@
5
5
  List r = getAwesomeData();
6
6
  // メソッドの戻り値は有効なリストかもしれないしnullかもしれない
7
7
  // どのようなメソッド仕様なのかはドキュメントを読まないとわからない
8
- int n = r.size(); // nullの場合はNullPointerException発生!
8
+ System.out.println("size=" + r.size()); // nullの場合はNullPointerException発生!
9
9
  ```
10
10
 
11
11
  > またjava8で追加されたoptional型、nullチェックを強制するとはどういう意味なんでしょうか?
12
- Optional型、正確には`java.util.Optional<T>`クラスは、ソースコード上で「中身が空(empty)かもしれない変数」を明確にし、「プログラマにチェックを忘れない/忘れさせない」ための仕組みです。特にメソッド戻り値型で使うと効果的です。
12
+ Optional型、正確には`java.util.Optional<T>`クラスは、ソースコード上で「中身が空(empty)かもしれない変数」を明確にし、「プログラマにチェック処理を忘れさせない」ための仕組みです。特にメソッド戻り値型に利用すると効果的です。
13
13
 
14
14
  ```
15
15
  Optional<List> r = getAwesomeData();
16
16
  // 戻り値は「無効値かもしれないリスト型」とはっきりわかる
17
17
 
18
18
  // r.size();とは呼び出せない(コンパイルエラー)
19
- // 有効なリストならその要素数を、無効値ならば0を取得する
19
+ // 有効なリストならその要素数を表示する、無効値ならなにもしない
20
- int n = s.isPresent() ? s.get().size() : 0;
20
+ r.ifPresent(x -> { System.out.println("size=" + x.size()); });
21
21
  ```
22
22
 
23
23
  下記リンクも参考になるかと思います。
24
24
  - [詳解 Java SE 8 第11回 nullチェックとOptional](http://itpro.nikkeibp.co.jp/atcl/column/14/224071/072300002/)
25
25
  - [Java8でのプログラムの構造を変えるOptional、ただしモナドではない](http://d.hatena.ne.jp/nowokay/20130524)
26
+ - [Optional 使い方編](http://www.javazuki.com/articles/javase/optional-usage.html)