【Java】equalsメソッドでnullを回避する方法(空文字に置換すればよい)
Javaのequalsメソッドを使用すると、文字列が一致しているかどうか比較することができます。
String str1 = "test"; String str2 = "test"; String str3 = "Test"; System.out.println(str1.equals(str2)); System.out.println(str1.equals(str3)); //実行結果 true false
文字列が一致していればtrue、異なる場合はfalseとなります。
一方でequalsメソッドを使用する場合に「NullPointerException」となることがあります。
String str1 = null; String str2 = "test"; System.out.println(str1.equals(str2)); //実行結果 java.lang.NullPointerException
nullからequalsを呼び出すためエラーとなるわけです。逆に言えば、nullでなければ、エラーとなりません。
String str1 = null; String str2 = null; System.out.println(str2.equals(str1)); //実行結果 java.lang.NullPointerException
ただこの場合、両方ともnullの場合はエラーを回避できません
nullの場合は空白文字に変換するなどの処理をすれば、nullエラー回避できます。
String型の値にnullが入り得る場合は、nullを空文字に変換するメソッドを実装して置くなどの対処が必要です。
public static void main(String[] args) { String str1 = "test"; str1 = nullkara(str1); String str2 = null; str2 = nullkara(str2); System.out.println(str1); System.out.println(str2); System.out.println(str2.equals(str1)); } // nullを空文字に変換するメソッド static String nullkara (String str) { // nullの場合、空文字を返す if (null == str) { return ""; } // null以外の場合、そのまま返す return str; } //実行結果 test false
コメントを残す