在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...
}
我认为keys.contains(null)
和keys.contains("")
的最后2次检查不正确,可能会抛出运行时异常。 我知道我可以循环遍历if
语句中的列表,并在那里检查空值/空值,但我正在寻找更优雅的解决方案(如果存在)。
答案 0 :(得分:31)
keys.contains(null) || keys.contains("")
如果列表中有空(或)空字符串,则不会抛出任何运行时异常和结果true
。
答案 1 :(得分:5)
这对我来说很合适,keys.contains(null)
和keys.contains("")
的唯一例外情况是keys
本身是null
。
但是,首先检查一下,您知道此时keys
不是null
,因此不会发生运行时异常。
答案 2 :(得分:1)
你也可以使用Apache StringUtils并检查字符串isBlank,这将检查null,Emptystring并且还会修剪你的值。
if(StringUtils.isBlank(listItemString)){...}
Checkout StringUtils Docs here:
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html
答案 3 :(得分:0)
我不确定但ApacheCommon库中没有任何帮助类可以做到这一点吗?比如你有一个字符串的isEmpty并且你在ApacheCommons库中有isNullOrEmpty
答案 4 :(得分: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;
}
答案 5 :(得分:0)
使用Java 8,您可以执行以下操作:
public String normalizeList(List<String> keys) {
boolean bad = keys.stream().anyMatch(s -> (s == null || s.equals("")));
if(bad) {
//... do whatever you want to do
}
}