AndroidのTextUtilsのisEmptyメソッドとJavaのStringのisEmptyメソッドはわりと違う
年がら年中使っているAndroidのTextUtilsのisEmptyメソッドとJavaのStringのisEmptyメソッドですが、同じ名前で何が違うのか調べたメモです。
TextUtilsクラスのメソッドは全てstaticで定義されていて、JavaのisEmptyメソッドはインスタンス変数から使用する形になっているという違いはありますが、中身はどうでしょう。
それぞれのコードはこのようになっています。
java.lang.String
public boolean isEmpty() { return count == 0; }
※countはfinal int の変数で、Stringオブジェクト初期化時にセットされる文字数です。
android.text. TextUtils
public static boolean isEmpty(@Nullable CharSequence str) { if (str == null || str.length() == 0) return true; else return false; }
大きな違いは、TextUtilsのisEmptyメソッドはnullチェックがなされている部分です。
メソッドの引数がnullのオブジェクトが渡されてきてもjava.lang.NullPointerExceptionで落ちませんが、JavaのisEmptyメソッドではインスタンス変数がnullの場合は当然落ちます。
例えば次のコードはNullPointerExceptionが発生します。
public void onFinish(String example) { example = null; if (example.isEmpty()) { Log.d("Example","exampleがemptyです"); }
以上です。