任何Java熟练/专家都可以建议我在使用它之前检查空引用或对象的乐观方法是什么,以避免NullPointerException
?
在我的代码中,我有超过100个字段,并且为了在请求中传递值,大多数字段都是必需的,但我需要在每次传递请求之前执行空检查以避免NullPointerException
我在下面显示了一小段代码,我每次检查每个字段的空值(在我的一个文件中可以说更多70次),这看起来不太好,代码变得非常丑陋且难以理解。有什么方法可以通过它编写方法并执行空对象检查吗?
基本上我看起来更好,乐观和快捷的方式,非常需要任何快速帮助。
if(amount != null && amount != "" && !amount.isEmpty())
AIMRequest.put("x_Amount", amount);
if(currency != null && currency != "" && !currency.isEmpty())
AIMRequest.put("x_Currency_Code", currency);
if(expDate != null && expDate != "" && !expDate.isEmpty())
AIMRequest.put("x_Exp_Date", expDate);
...........so on
答案 0 :(得分:4)
add("x_Amount", amount);
add("x_Currency_Code", currency);
add("x_Exp_Date", expDate);
void add(String name, String value)
{
if(value!=null && !value.isEmpty())
AIMRequest.put(name, value);
}
答案 1 :(得分:1)
根据您的if
条件,您要比较String
的条件,因此请制定方法:
public boolean isValid(String s) {
return s != null && s != "" && !s.isEmpty();
}
如果要使用此方法比较对象,请更改签名public boolean isValid(Object o)
,
并且您的代码将是干净的:
if(isValid(amount))
AIMRequest.put("x_Amount", amount);
if(isValid(currency)
AIMRequest.put("x_Currency_Code", currency);
if(isValid(expDate)
AIMRequest.put("x_Exp_Date", expDate);
但是如果你可以收集array
中的所有对象:
public boolean isValid(Object[] os) {
for (String s : os) {
boolean isValid = s != null && s != "" && !s.isEmpty();
if (!isValid) return false;
}
return true;
}
答案 2 :(得分:-1)
此方法将接受一个对象数组并循环遍历它们以检查是否有任何未定义的对象,或者为null或为空。
public Object[] checkForNull(Object[] objects){
for(int i = 0;i<objects.length;i++){
//check all conditions for null empty or no data.
if(objects[i]!= null && objects!= "" && !objects[i].isEmpty())
object[i] = "UNDEFINED";
return objects[];
}
所以现在你可以传递你想要检查的所有对象为空或未定义或null然后在你想要使用的所有你需要做的事情是检查:
if(object == "UNDEFINED")
希望它有所帮助。