*を文字列に変換する最良の方法は、次を使用することです。
String.valueOf(x)
を実装するプリミティブ型、ラッパークラス、およびオブジェクトで機能しますtoString()
。
ここで、xは任意の種類のプリミティブまたはオブジェクトです。nullの場合、文字列'null'を返します。
これが最適な理由は、「+」オペランドの使用は文字列の連結を意味し、「」は文字列のインスタンス化を意味するためです。"" +何かを使用してクラスを逆コンパイルすると、コンパイラがそれを複数の操作に変換するのがわかります。
""連結の結果はと同じString.valueOf()
ですが、少し高価です。パフォーマンスの違いはおそらく無視できる程度ですが、優れたプログラマーは、より良い方法がある場合に、何かを文字列に変換するために'""+something'を記述しません。これはたまたま正しい方法です:)。
配列については、Arrays.toString()および-better- Arrays.deepToString( )をご覧ください。
しかし、「ハック」を使用するのは「良い」コーディングスタイルですか?
構文ハックによってコードが改善されることがあります。しかし、上記のケースは、実際にはそれらのケースの1つではありません。""連結は適切なコードとは見なされません。
便利な構文ハックの例は、二重中括弧のインスタンス化です。
List<String> list = new ArrayList<String>() {{
add("foo");
add("bar");
add("baz");
}};
それ以外の
List<String> list = new ArrayList<String>();
list.add("foo");
list.add("bar");
list.add("baz");
"" +何かは、読みやすさを向上させるハックというよりもコードの臭いです。ある程度の経験がある人なら誰でも、APIと言語の知識が不足しているJava開発者に思いを馳せるでしょう。
その他の興味深い「ハック」は、流暢なAPI(Mockitoなど)、dsl、またはlambda4jなどのハックです。