LoginSignup
8
7

More than 5 years have passed since last update.

【ピュアJava】サンプルソース勉強会用

Last updated at Posted at 2014-08-04

初めに

こちらの記事では主にピュアJavaで書いたサンプルソースでも載せようかなと思います。
基本的には、初心者に教えるときや、ローカルテストなどで使うために少し書いたものが多いですが、参考程度に

Listのチェック時の注意

まずは、Listのnullチェック時の挙動テストです。
設計もせず、またコメントが1つもないのですが、やってることとしては
* Listで渡されたものがisEmpty()、null、equals(null)、size()でチェックした時の戻り値がどうなるかという話です。
* コンソールに吐かれるのが、その結果です。
* もちろん、インスタンスができてないListを渡してしまうとオブジェクトでないのでisEmpty()から落ちます。ですが、エラーを握りつぶしてログ吐かせます。

サンプルソース

CheckList.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * {@link List}のnullチェックサンプル<br>
 *
 */
public final class CheckList {

    public static final String CONSOLE_LOG = "[%s: %s] \r\n";

    public static void list(final List<String> strs) {
        System.out.print(isEmpty(strs) == null ? "" : String.format(CONSOLE_LOG, "isEmpty", isEmpty(strs)));
        System.out.print(nullptr(strs) == null ? "" : String.format(CONSOLE_LOG, "nullptr", nullptr(strs)));
        System.out.print(equals(strs) == null ? "" : String.format(CONSOLE_LOG, "equals", equals(strs)));
        System.out.print(size(strs) == null ? "" : String.format(CONSOLE_LOG, "size", size(strs)));
    }

    static Boolean isEmpty(final List<String> strs) {
        try {
            return strs.isEmpty();
        } catch (Exception e) {
            System.out.print(String.format(CONSOLE_LOG, "isEmpty", e));
        }
        return null;
    }

    static Boolean nullptr(final List<String> strs) {
        return strs == null;
    }

    static Boolean equals(final List<String> strs) {
        try {
            return strs.equals(null);
        } catch (Exception e) {
            System.out.print(String.format(CONSOLE_LOG, "equals", e));
        }
        return null;
    }

    static Integer size(final List<String> strs) {
        try {
            return strs.size();
        } catch (Exception e) {
            System.out.print(String.format(CONSOLE_LOG, "size", e));
        }
        return null;
    }
}

Input

それでは、このソースに以下の3つのオブジェクトを渡します。

imput.java
final List<String> newNulls = new ArrayList<String>();
final List<String> nulls = null;
final List<String> newNotNulls = Arrays.asList("test");

Output

Inputに対する上から順に見ていくと
* インスタンスを作ったオブジェクトに対してはnullptrが発生せずに安全に判定をすることができています。
* nullを入れたまま渡すと、nullptrが発生してしまいます。

output.txt
#リストでnew ArrayList<String>()
[isEmpty: true] 
[nullptr: false] 
[equals: false] 
[size: 0] 

#リストでnull
[isEmpty: java.lang.NullPointerException] 
[nullptr: true] 
[equals: java.lang.NullPointerException] 
[size: java.lang.NullPointerException] 

#リストでArrays.asList("test")
[isEmpty: false] 
[nullptr: false] 
[equals: false] 
[size: 1] 

チェックする時

nullで渡さないこと。newするタイミングなどを気をつける。
nullチェック後→isEmpty()で判定するなどのnullptrに気をつける必要があります。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7