2016-12-16 18 views
10

あなたがmyIntegerの実装に応じStringUtils.isBlank()IntegerがJavaでnullかゼロかどうかをチェックする方法は?

+1

@RafałLaskowskiこれは型に依存します。つまり、 'int'と' Integer'(後者はnullになります)です。 – Thomas

+2

@RafałLaskowski彼はint型ではなく整数型であることを意味しました – Sweeper

+0

'int'または' Integer'型の 'myInteger'ですか?それが最初のものなら、それは 'ヌル 'になることはできません。 – skw

答えて

0

を使用することができます文字列のexamleについては

if (myInteger != null && myInteger != 0) { ... } 

を書くために、より簡潔な方法がある(すなわちmyInteger内の整数プロパティはボックスがある場合Integerまたはアンボックス付きプリミティブint)を使用する場合は、条件付きで1つ書く必要があります。

Integerは、実際のオブジェクトです。つまり、nullになります。それは、値として0を保持できると言われています。したがって、この場合、両方のチェックを行う必要があります。

intはプリミティブであり、nullの値を保持できません。この場合は、intのプロパティが0でないかどうかを確認するだけです。

2

私はこのために三項条件を使用します。 Javaの8付)

3

;

public static boolean isNullorZero(Integer i){ 
    return 0 == (i == null ? 0 : i); 
} 

これが読めない、私は同意する:

if (Optional.ofNullable(myInteger).orElse(0).intValue() != 0) { 
    ... 
} 

Optionalは応じて、あなたは完全にすべての場合の条件を避けるために役立つことがありますような何かあなたのユースケースで...

+1

'concise'の意味は本当に大きいです... –

+0

これは "醜い普通の"解決策よりも長いことに同意します。しかし、それで、Optionalがこれらのチェックをまったく避けるのに役立つかもしれないという追加を作ったのです。 –

+0

これはまだ、nullでないmyIntegerのチェックに失敗し、NullPointerExceptionで失敗します。対象オブジェクトは整数なので、ゼロではなくゼロであるかどうかをチェックする必要があります。 – acveer

関連する問題