通常の代わりに、クラスと doif (myString == null || myString.equals(""))
を使用することを好む傾向があります。org.apache.commons.lang.StringUtils
if (StringUtils.isEmpty(myString))
ただし、これには、少なくとも私が行っている方法では、大きな欠点があります。FindBugs またはコンパイラの警告メカニズム f. 元。Eclipse から - 明示的な null チェックが表示されなくなり、myString
null の可能性があると見なされなくなるため、潜在的な (または確実な) null ポインターに関する警告が表示されなくなり、これらの警告は私の見解では非常に役立ちます。 .
例 (追加):
import org.apache.commons.lang.StringUtils;
public class TestWarning
{
void testWarning(String myString)
{
//if (myString == null || myString.equals("")) // With this, the last line shows the warning.
if (StringUtils.isEmpty(myString)) // With this, no warning.
{
// Anything.
}
int x = myString.length(); // Warning is here: "Potential null pointer access: The variable myString may be null at this location"
}
}
したがって、この欠点を排除または最小限に抑える方法がないことを確認してStringUtils.isEmpty
、ヌルポインターの警告を使用して引き続き取得できるようにしています。たぶん@Nullcheck
、メソッドに追加したい注釈などがisEmpty
ありますか?
追加: たとえば、 のようなカスタム注釈を作成し、それをlike@Nullcheck
の引数に追加して、メソッドがその引数で null チェックを行うことを示し、コンパイラの警告メカニズムまたは FindBugs が処理するようにすることは可能でしょうか?明示的なヌルチェックのように?isEmpty
public static boolean isEmpty(@Nullcheck String str)
if (StringUtils.isEmpty(myString))