2017-05-15 5 views
-1

私は常にコードの多くでこれを参照してください。isEmpty()メソッドはNULL値をチェックしますか?

String s; 
if (s == null || s.isEmpty()) { 
//do something 
} 

しかしだけで十分

String s; 
if (s.isEmpty()) { 
//do something 
} 

私はJavaFXのテキストフィールドの虚しさを確認する場合は特に、私は好奇心ではありません。一般に

+3

's'がインスタンスを参照していない場合、インスタンスメソッドを呼び出すことはできません。 [*変数 's'はオブジェクトではありません。*](http://stackoverflow.com/documentation/java/4388/common-java-pitfalls/24130/) –

+2

試しましたか? –

+0

'null 'を事前にチェックせずに' isEmpty() 'を呼び出すと、' NullPointerException'が発生する可能性があります。 –

答えて

3

s.isEmpty() 

checks if s is an empty string、その中にない文字を、すなわち文字列。 sがヌルの場合、s.isEmpty()を呼び出す(またはsで他のメソッドを呼び出そうとする)と、NULLポインタ例外がスローされます。

は、(それが実際に依頼する意味がないことに注意してください「null値のためisEmpty()方法のチェックをい」:sがある場合、このメソッドが呼び出されないことができます:sがnullの場合手立てそのs.isEmpty()できるおそらくチェックはありませんあなたが明示的にヌル(textField.setText(null))にそれを明示的に設定しない限り、TextField.getText()はヌルを返さないことに注意してください。言い換えれば、デフォルト値は空の文字列であり、ユーザタイプとして呼び出される "内部"メソッドによってtextプロパティがnullに設定されることはありません。テキストフィールドは定義されている即時クラス(または作成されたFXMLファイルのコントローラ)に限定する必要があるため、setText(...)メソッドへの呼び出しを制御することができます。

TextField textField = ... ; 

if (textField.getText() == null || textField.getText().isEmpty()) { 
    // ... 
} 

textField.getText() == nullが常に偽であることを保証することにより

TextField textField = ... ; 

if (textField.getText().isEmpty()) { 
    // ... 
} 

に相当します。

+0

それが私が知りたかった理由です。ありがとう! – DeluxeD

+0

'textField.setText(null)'を呼び出すと、 'textField.getText()== null'は' true'を返します。 – jewelsea

+0

@jewelseaこれは本当です。精度のための答えを更新しました。 –

関連する問題