_StringUtils.EMPTY
_の代わりに_""
_を使用していますか?
戻り値として、またはString変数の値を設定した場合のいずれかを意味します。 StringUtils.isEmpty()
を使用しているので、比較するつもりはありません
もちろん違います。 「」が十分に明確でないと本当に思いますか?
定数には、基本的に3つのユースケースがあります。
ここには適用されません。
私が使う StringUtils.EMPTY
、リテラルを非表示にし、そのreturn StringUtils.EMPTY
は完全に予期されていたため、空の文字列""
は、""
は簡単に別のものに変更できますが、これはたぶん間違いでした。 EMPTY
の方が表現力が高いと思います。
いいえ、""
を使用してください。
リテラル""
は水晶のように明確です。意味について誤解はありません。そのためにクラス定数が必要な理由はわかりません。この定数は、""
の代わりにStringUtils
を含むパッケージ全体で使用されていると想定できます。ただし、使用する必要があるわけではありません。
歩道に岩があれば、投げる必要はありません。
String
interning とクラスの初期化について話している人がいないので、ここに2セントを追加します。
String
リテラルはインターンされ、any""
およびStringUtils.EMPTY
をsameオブジェクトにします。StringUtils.EMPTY
の使用canStringUtils
クラスを初期化します。静的メンバーEMPTY
にアクセスするのは、final
が宣言されていない場合のみです(JLSはその点に固有です)String interningの関連する回答 および クラスの初期化 を参照してください。 JLS 12.4.1 を参照してください。
「」が実際に空の文字列であり、Unicodeの不可視の非スペーシング文字が(偶然に)含まれていないことを盲目的に想定して喜んでいる人がどれだけいるかに驚かされます。善良でまともなすべての愛のために、できる限り空を使用してください。
return "";
はreturn StringUtils.EMPTY
より短いので、私はそれを使うのはあまり好きではありません。
ただし、1つfalseを使用する利点は、return " ";
の代わりにreturn "";
を入力すると、異なる動作が発生する可能性があることです(空の文字列を正しくテストするかどうか) 。
クラスがコモンズの他のものを使用しない場合、この魔法の価値のためだけにこの依存関係を持つことは残念です。
StringUtilsのデザイナーはこの定数を多用します。これは正しいことですが、だからと言ってそれを使用する必要があるわけではありません。
StringUtils.EMPTY
は、読みやすさのために役立つ場合があります。特に:
三項演算子。
item.getId() != null ? item.getId() : StringUtils.EMPTY;
また、定数を使用することにより、StringUtils.EMPTY
への参照が作成されます。それ以外の場合、JVMが文字列プールに既に存在するかどうかを確認する必要があるたびに、文字列リテラル""
をインスタンス化しようとすると(おそらく、追加のインスタンス作成オーバーヘッドはありません)。 StringUtils.EMPTY
を使用すると、文字列プールを確認する必要がなくなりますか?
いいえ、私はもっと書く必要があるからです。 empty文字列はプラットフォームに依存しませんempty(Javaの場合)。
File.separator
は「/」または「\」よりも優れています。
しかし、あなたが好きなようにしてください。 return " ";
のようなタイプミスはありません
正直なところ、どちらもあまり使われていません。空の文字列と比較する場合は、StringUtils.isNotEmpty(..)
を使用します