24

Javaでは、次のメソッドがあります。

public String normalizeList(List<String> keys) {
    // ...
}

私はそれを確認したいkeys:

  • nullそれ自体ではありません。と
  • 空ではありません ( size() == 0); と
  • Stringである要素はありませんnull。と
  • String空 ("") の要素はありません

これは、「コモンズ」スタイルの JAR に含まれるユーティリティ メソッドです (クラスは のようなものになりますDataUtils)。これが私が持っているものですが、間違っていると思います:

public String normalize(List<String> keys) {
    if(keys == null || keys.size() == 0 || keys.contains(null) || keys.contains(""))
        throw new IllegalArgumentException("Bad!");

    // Rest of method...
}

との最後の 2 つのチェックは正しくなく、実行時例外がスローされる可能性が高いとkeys.contains(null)思います。ステートメント内のリストをループして、そこでnull/emptyをチェックできることはわかっていますが、よりエレガントなソリューションが存在する場合は探しています。keys.contains("")if

4

6 に答える 6

40
 keys.contains(null) || keys.contains("")

trueリストに null (または) 空の文字列がある場合、実行時例外と結果はスローされません。

于 2012-08-16T17:46:57.923 に答える
7

keys.contains(null)これは私には問題ないように見えます。唯一の例外はkeys.contains("")keysそれ自体がnull.

ただし、最初にそれを確認するため、この時点で でkeysはないことがわかっているnullため、実行時例外は発生しません。

于 2012-08-16T17:48:01.587 に答える
0

よくわかりませんが、ApacheCommon ライブラリにそれを行うためのヘルパー クラスはありませんか? 文字列に isEmpty があり、ApacheCommons ライブラリに isNullOrEmpty がある場合のように

于 2012-08-16T18:01:03.767 に答える
0

ワンパスでリストを確認

  public static boolean empty(String s) {
    if (s == null)
      return true;
    else if (s.length() == 0)
      return true;
    return false;
  }  

  public String normalize(List<String> keys) {
    if(keys == null || keys.size() == 0)
        throw new IllegalArgumentException("Bad!");
    for (String key: keys)
      if(empty(key))
         throw new IllegalArgumentException("Empty!");

    // Rest of method...
    return null;
  }
于 2012-08-16T18:10:26.777 に答える