14

私のコードは、nullpointerexception で次の行で壊れています:

 if (stringVariable.equals(null)){

このステートメントの前に、stringVariable を宣言し、データベース フィールドに設定します。

このステートメントでは、フィールドにnull値があるかどうかを検出しようとしていますが、残念ながら壊れています!

何かご意見は?

4

4 に答える 4

36

使用する

stringVariable == null

かどうかをテストしstringVariableますnull

equalsメソッド (および他のすべてのメソッド) は、 ではない必要がstringVariableありますnull

于 2010-03-01T18:21:25.640 に答える
16

stringvariableが既に null の場合は、Stringオブジェクトとして存在しなくなるため、メソッドさえありません.equals! したがって、 whenstringvariable null の場合、実際に行っているのはnull.equals(null)であり、その時点でメソッドがないNullPointerExceptionためを取得します。null.equals()

于 2010-03-02T16:06:54.730 に答える
5

equals() であろうとなかろうと、null の可能性がある変数に対してメソッドを呼び出すことは決して賢明ではありません。そのため、通常は次のようなことを行います。

if ( var != null && var.method(something) ) {
  // var.method() was true
} else {
  // var is null or var.method is false
}

あなたの特別なケースでは、それで十分です

if (stringVariable == null) {
}

文字列を扱う場合、Apache Commons StringUtilsをチェックアウトするために支払うことができます。

apache commons ライブラリには、自家製のものよりも優れた最適化されたユーティリティ (文字列、コレクション、日付など) がたくさんあるため、常にチェックする価値があります。

于 2010-03-01T18:30:39.833 に答える
1

equals() メソッドは null パラメータでは機能しません。

メソッドには、オブジェクトまたは文字列をパラメータとして指定する必要があります。

public boolean equals(Object anObject)

null はオブジェクトではないため。 null はオブジェクトですか? .

また、渡されたオブジェクトが null でない場合に限り equals が結果を返すと書かれている Java 7 のドキュメントも参照してください。

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals(java.lang.Object)

于 2015-08-06T17:46:52.480 に答える