Javaオブジェクトをどの方法に変換するString
ことをお勧めしますか?またその理由は?
たとえば、次のものがあるとします。
StringBuilder sb = new StringBuilder();
2 つの方法で変換できString
ます。初め:
sb.toString();
2番:
sb + "";
最初の方法は、より一般的に使用され、より効率的であるため、推奨されます。
String が空でない場合にのみ 2 番目を使用します (その場合は、StringBuilder に追加する必要があります)。
2 番目の例は、
new StringBuilder().append(sb.toString()).append("").toString();
技術的にはこれを行います。
new StringBuilder().append(String.valueOf(sb)).append("").toString();
違いは、NPE ではなく String.valueOf(null) => "null" であるということです。
との主な違いはsomeObject.toString()
、someObject + ""
someObject が null の場合です。前者は NullPointerException をスローしますが、後者はスローしません (「null」を返します)。
オブジェクトが null でないことが予想される場合は、次のようになります。
String s = someObject.toString();
不要な連結を保存します (コンパイラによって削除される場合とされない場合があります)。
ただし、オブジェクトが null になる可能性があり、それが許容値である場合は、次のようにします。
String.valueOf(someObject);
この例では、someObject
が null の場合、"null" を返し、例外をスローしません。
@Peter Lawreyが述べたように、最初のものはStringBuilderでより一般的に使用されます。ただし、文字列にキャストする場合は、次のことを行う方がよい場合があります...
(String) myVariable;
それよりも...
myVariable.toString();
この理由は、2番目がnullポインタ例外をスローする可能性があるためです。
3 番目の可能性があります。
Objects.toString(Object o, String nullDefault)
最初の引数が の場合は 2 番目の引数が返されnull
、それ以外の
場合o.toString()
は が返されます。
(Objects.toString(Object o)
と同じものを返すもありますString.valueOf
)