私のコードは、nullpointerexception で次の行で壊れています:
if (stringVariable.equals(null)){
このステートメントの前に、stringVariable を宣言し、データベース フィールドに設定します。
このステートメントでは、フィールドにnull
値があるかどうかを検出しようとしていますが、残念ながら壊れています!
何かご意見は?
私のコードは、nullpointerexception で次の行で壊れています:
if (stringVariable.equals(null)){
このステートメントの前に、stringVariable を宣言し、データベース フィールドに設定します。
このステートメントでは、フィールドにnull
値があるかどうかを検出しようとしていますが、残念ながら壊れています!
何かご意見は?
使用する
stringVariable == null
かどうかをテストしstringVariable
ますnull
。
equals
メソッド (および他のすべてのメソッド) は、 ではない必要がstringVariable
ありますnull
。
stringvariable
が既に null の場合は、String
オブジェクトとして存在しなくなるため、メソッドさえありません.equals
! したがって、 whenstringvariable
がnull の場合、実際に行っているのはnull.equals(null)
であり、その時点でメソッドがないNullPointerException
ためを取得します。null
.equals()
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 ライブラリには、自家製のものよりも優れた最適化されたユーティリティ (文字列、コレクション、日付など) がたくさんあるため、常にチェックする価値があります。
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)