文字列を比較するときインスタンスメソッドに依存しない方が、メソッドが呼び出される文字列がnullにならないようにすることが望ましい.NETでは、静的String.Compare(string、string、bool)メソッドを使用します。 javaは、同様のビルトインの "null-safe"文字列比較ユーティリティを提供していますか、自分で実装する必要がありますか?javaは組み込みの静的String.Compareメソッドを提供していますか?
答えて
いいえ、JDKは詐欺ではありませんそのような有用性はない。しかし、これを行ういくつかの外部ライブラリがあります。たとえば、org.apache.commons.lang.StringUtils
は、ヌルセーフのequals(String, String)
とequalsIgnoreCase(String, String)
を提供します。 Guavaも同様のユーティリティを持っています。
私は他の人が指摘したように答えはありません、あなたが
if(myString != null && myString.equals("string")) {
// do something
}
前にそれをチェックするために、おそらく持っているのApache Commonsのは、これを持って、そしてまた春推測:
if(StringUtils.hasLength(myString)) {
// do something
}
ありません。 Apache Commonsは「StringUtils.equals()
はこのようにそれを行います。
public static boolean equals(String str1, String str2) {
return str1 == null ? str2 == null : str1.equals(str2);
}
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo(java.lang.String)
をint型を返すと比較があります。また、 がブール値を返すequalsもあります。文字列インスタンスがある場合は、 を実行できるはずです。 instance.equals(null)を渡すとfalseを返します。 インスタンスがnullの場合、NULLポインタが取得されます。
public class App
{
public static void main(String[] args)
{
String myString = "test";
if(myString.equals(null))
{
System.out.println("Its NUll");
}else
{
System.out.println("Not Equal");
}
}
}
-1:質問は静的**、文字列を比較する方法ではなく、文字列を比較するnull安全な組み込みメソッドに関するものです。 –
文字列はとにかく(すなわち、あなたが実際にオブジェクトにcomapreToメソッドを呼び出す前に、NULL値をチェックする必要があります)、nullでは安全ではありません提供compareTo methodを行います。あなたは何ができるか
だけで行うプロパティを確認するには、この
class StringComparator implements Comparator<String> {
public int compare(String s1, String s2) {
if (s1 != null) {
return s1.compareTo(s2);
} else {
if (s2 == null) {
return 0;
} else {
return -1;
}
}
のようなあなた自身のコンパレータを書くである:
Comparator<String> comp = new Comparator<String>();
System.out.println(comp.compare(s1, s2);
私はが実際にコードをテストするので、それを取ることはありませんでした一般的な例として。 利点は、とにかくヌル値をチェックする必要がある場合でも、一度それを書いて何度も使用できることです。
また、a built in ComparatorをStringクラスの中で見ることができます。
はい、新しいプロジェクトごとにこのタイプのコードを追加しています。ヌルチェックを処理するために 'Strings.compare(左、右)'であるべきであるように思えます – Kirby
比較する文字列のいずれかが定数より大きい場合は、null
としてequals
を使用できます。
if("string".equals(mystring)) {
// do something
}
あなたは2つの変数、あなたがあなた自身の静的メソッドを書くことができている場合:
public static boolean stringEquals(String s1, String s2) {
if (s1 == null) {
return s2 == null;
}
return s1.equals(s2);
}
をsagelyのApache CommonsのObjectUtils
クラスを使用するように助言し、ここで同様の質問 How to simplify a null-safe compareTo() implementation?
があります
result = ObjectUtils.compare(left, right);
- 1. Javaの組み込み静的インタフェース
- 2. 静的メソッドに非静的戻り値を組み込む?
- 3. 埋め込みJettyの代替パスからの静的ファイルの提供
- 4. Pythonの組み込みメソッドはどのクラスに属していますか?
- 5. フォーム認証で静的コンテンツを提供する埋め込みJetty
- 6. Objective Cプロジェクトへの静的C++ライブラリの組み込み
- 7. WCF WSDLは複雑な型/メソッドのみを提供します
- 8. Javaの組み込みデータベース/ファイルバックアップフレームワークはありますか?
- 9. djangoのコメントフレームワークに組み込まれた削除ボタンを提供する方法
- 10. PHP - 読み込み静的クラスはヘッダを送信します
- 11. Mavenには組み込みの静的なhtmlプロジェクトが含まれています。
- 12. python組み込み型に新しいメソッドを追加する
- 13. Javaの組み込みライブラリの実装
- 14. Javaでのmp3ファイルの組み込み
- 15. Javaで組み込みの比較ソート
- 16. クラスからの組み込みモジュールの呼び出しメソッド
- 17. 中信頼の組み込みデータベースを探しています
- 18. Java組み込みクラスを再コンパイルします
- 19. サーバーのAPIを提供している間に静的ファイルを提供できますか?
- 20. libcurlが提供するストリームからjpegを読み込みます。
- 21. 書込みコレクションのコピーはスレッドセーフティをどのように提供しますか?
- 22. 静的埋め込みイメージを動的に選択していますか?
- 23. PyQt4組み込み端末ウィジェットを探しています
- 24. iPhoneの組み込み辞書またはスペルチェッカーにアクセスしていますか?
- 25. YCMは組み込み関数の完了をサポートしていますか?
- 26. Compojureから静的ファイルを提供
- 27. S3から静的資産を提供
- 28. Cortex M3用Java VMを組み込みました
- 29. 提供する静的ファイルは、Apache +ユニコーン
- 30. Nginxは静的コンテンツとApacheへのプロキシを提供します
ライブラリには、私が思うには、apacheのStringUtilsがあります。androidにはTextUtilsがあります。 – njzk2