質問
これはdupicate質問かもしれpossiblityがあります。 私はnull.IにString変数がまたは私はこの変数がnullに等しくないかどうかを確認したいと私はexception.Iを投げるために余裕がないNULLポインタを取得しようと何value.Nowでそれを更新しない場合があります初期化それはefficient.TIAある任意の回避策はありcostly.IsをあるようにNullPointer例外
解決
あなたが使用している場合は、
if (x == null)
は、のないのNullPointerException
を取得します。
私はあなたがやっている疑います:
if (x.y == null)
x
がヌルであるため、x.y
がnullではないため、スローされます。
それはそれを説明していない場合は、NULLかどうかをテストするために使用しているコードを投稿してください。
他のヒント
私はあなたがこのような何かをやっていると思い、
String s = null;
if (s.equals(null))
あなたはこのようなヌルのチェックのいずれか
if (s == null)
より良いアプローチは、
、ヌルを無視し、ちょうどこのような期待値をチェックすることです if ("Expected value".equals(s))
sがnullのとき、この場合、結果は常にfalseです。
文字列は不変である。
@Test(expected = NullPointerException.class)
public void testStringEqualsNull() {
String s = null;
s.equals(null);
}
@Test
public void testStringEqualsNull2() {
String s = null;
TestCase.assertTrue(s == null);
}
私はSを比較しています==ヌルのみ
あなたが書いたコードスニペットを表示することができます S == nullがNPEをスローすることはありません。
は、その後、「S」の後にドット(。)を適用されません。ドットを適用するように、その操作を行うと、NullPointerExceptionがスローします(。)あなたは、現時点では基本的にヌルであるポインタの場所にアクセスしようとしていることを意味します!
また、文字列がnullまたは空であるかどうかを確認するライブラリ関数を使用するようにしてください。あなたがチェックapacheのライブラリーからStringUtils.isEmpty(複数可)を使用することができ、両方の