文字列を比較するときインスタンスメソッドに依存しない方が、メソッドが呼び出される文字列が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. Dagger2の静的提供メソッド
- 4. TypeScript:組み込みクラスに静的メソッドを追加する方法
- 5. 埋め込みJettyの代替パスからの静的ファイルの提供
- 6. Pythonの組み込みメソッドはどのクラスに属していますか?
- 7. HtmlPluginを使用してサブディレクトリからwebpack組み込み資産を提供します
- 8. Laravel Artisanはターミナルをブロックせずに組み込みサーバーをどのように提供しますか?
- 9. フォーム認証で静的コンテンツを提供する埋め込みJetty
- 10. Rails 5に組み込みのJSONapiが組み込まれていますか?
- 11. Objective Cプロジェクトへの静的C++ライブラリの組み込み
- 12. 静的なプロパティのみを提供するクラスの名前は何ですか?
- 13. WCF WSDLは複雑な型/メソッドのみを提供します
- 14. Google App Engineは静的ファイルを提供していません
- 15. Expressは静的ファイルを提供していません
- 16. Djangoは静的ファイルを提供していません
- 17. Javaの組み込みデータベース/ファイルバックアップフレームワークはありますか?
- 18. 組み込みデータベースと組み込みデータベースの違いは何ですか?
- 19. 組み込みのAjaxフレームワークを使用して、10月のCMSでSelect2のデータソースを提供する方法
- 20. djangoのコメントフレームワークに組み込まれた削除ボタンを提供する方法
- 21. PHP - 読み込み静的クラスはヘッダを送信します
- 22. Mavenには組み込みの静的なhtmlプロジェクトが含まれています。
- 23. djangoがnginxで静的ファイルを提供しています
- 24. フォームに静的メソッドを提供する方法は?
- 25. python組み込み型に新しいメソッドを追加する
- 26. wso2は組み込みデータベーススキーマを変更しています
- 27. Javaの組み込みライブラリの実装
- 28. Javaでのmp3ファイルの組み込み
- 29. Express静的ミドルウェアはindex.htmlを自動的に提供します
- 30. Javaで組み込みの比較ソート
ライブラリには、私が思うには、apacheのStringUtilsがあります。androidにはTextUtilsがあります。 – njzk2