11

私は持っています

if (localName.equals("TaxName")) {

しかしPMDは言う

Position literals first in String comparisons
4

5 に答える 5

28

"TaxName".equals(localName)localNamenullであるかのように、nullポインタ例外を取得しない方がよいでしょう。

于 2010-06-23T20:44:59.360 に答える
8

PMDは、この警告が生成される理由も通知する必要があります。PMD Webサイトのルールドキュメントから:

文字列の比較でリテラルを最初に配置します。そうすれば、文字列がnullの場合、NullPointerExceptionは発生せず、falseが返されます。

于 2010-06-23T20:46:11.220 に答える
5

私はリテラルを最初に配置することを好みます、すなわち:

if ("TaxName".equals(localName)) { ...

このようにして、NullPointerExceptionを取得する代わりに、nullの場合の正しい比較を行います。

于 2010-06-23T20:46:00.513 に答える
2

個人的には、それは私には意味がありません。コードがNullPointerExceptionをキャッチした場合、後で行う必要のない作業が完了します。localNameがnullになり、後で問題が発生する場合は、追跡が困難になります。コンパイラを満足させるためにコードを変更しないでください。コードがNullPointerExceptionをスローした場合、後でデバッグする時間を節約できます。

于 2010-06-23T20:50:39.600 に答える
-1

この警告を回避するためのより簡単な解決策は、事前にnullpointersをチェックすることです。これは、この場合だけでなく、管理するすべてのオブジェクトで推奨されます。

if (localName!=null && localName.equals("TaxName")) {
    ...
}
于 2016-09-12T11:04:24.343 に答える