Java

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

More than 3 years have passed since last update.

初めに

こちらの記事では主にピュア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に気をつける必要があります。