11

新しいEclipse4.2(Juno)NullAnalysisを使い始めたところです。

このようなコードでは:

x = foo();
if (x == null)
    fail("x is null");
return x.bar();

xがnullの可能性があるという警告が表示されます。しかし、失敗は常にスローされ、したがって決して戻らないため、そうすることはできません。(より良い手順間分析により、おそらくこれを自動的に決定することができますが、現在はそうではないようです。)

明らかに、警告を回避するためにコードを書き直す方法はありますが、私が欲しいのは、失敗しても戻らないことを示す方法(注釈など)です。

また、@ SuppressWarnings( "null")を使用して警告を抑制しようとしましたが、機能しませんでした。

警告を取り除く1つの方法は、次を追加することです:(assert x != null;ヌル分析にアサートを含めるように設定をオンにしたと仮定します)

GCC C ++では、次のことができます。void fn __attribute__ ((noreturn))

4

2 に答える 2

15

これを行う半伝統的な方法の 1 つを次に示します。

public RuntimeException fail(String message) {
  throw new RuntimeException(message);
}

だからあなたは書くことができますthrow fail("x is null")。もちろん、failは ではなく、常にスローを実行throwすることになりますが、その行が常にスローすることをコンパイラーに安心させるには十分です。

于 2012-06-28T17:12:10.363 に答える
0

org.eclipse.jdt.annotation.Nullable注釈を試しましたか?

http://git.eclipse.org/c/jdt/eclipse.jdt.core.git/tree/org.eclipse.jdt.annotation/src/org/eclipse/jdt/annotation/Nullable.java

于 2012-06-28T17:12:13.267 に答える