4

これは重複した質問である可能性があります。String 変数を null に初期化します。値で更新する場合と更新しない場合があります。この変数が null と等しくないかどうかを確認したいのですが、何をしようとしても null ポインター例外が発生します。スローする余裕はありません。コストがかかるため、nullpointer 例外が発生します。効率的な回避策はありますか。TIA

4

5 に答える 5

3

こんなことをしているとは思いますが、

  String s = null;

  if (s.equals(null))

このようにnullをチェックします

  if (s == null)

より良いアプローチは、null を無視して、次のように期待値をチェックすることです。

  if ("Expected value".equals(s))

この場合、s が null の場合、結果は常に false になります。

于 2009-08-14T13:01:16.177 に答える
3

使用する場合

if (x == null)

を取得できませNullPointerExceptionん。

私はあなたがやっていると思う:

if (x.y == null)

xnull のためではなく、null のためにスローされx.yます。

それでも説明できない場合は、無効性をテストするために使用しているコードを投稿してください。

于 2009-08-14T12:55:10.300 に答える
1

s==null のみを比較しています

s==null が NPE をスローしないことを記述したコード スニペットを表示できますか

于 2009-08-14T13:21:52.423 に答える
1

文字列は不変です

@Test(expected = NullPointerException.class)
public void testStringEqualsNull() {
    String s = null;
    s.equals(null);
}

@Test
public void testStringEqualsNull2() {
    String s = null;
    TestCase.assertTrue(s == null);
}
于 2009-08-14T12:56:29.487 に答える