假如一个类很多很多个字段,你需要判定 其中的 一大部分字段 是都能为空,要是一只写循环 费力费时。这时候用反射去处理会更好一点,
首先 假如需要判空的字段 为下面的一些字段:
//需要判空的字段
public String VALID_PROP_ARR = "projectType,reportArea,projectName,orgName,corporation,corporationCode,registeredTime,registeredAddress,netAssets" +
",debt,paiclupCapital1,paiclupCapital2,paiclupCapital3,employ1,employ2,employ3,collegeEmploy1,collegeEmploy2,collegeEmploy3,fixAssets1,fixAssets2," +
"fixAssets3,allAssets1,allAssets2,allAssets3,mainRevenue1,mainRevenue2,mainRevenue3,allProfit1,allProfit2,allProfit3,tax1,tax2,tax3,serviceEnt1,serviceEnt2" +
",serviceEnt3,serviceSmeEnt1,serviceSmeEnt2,serviceSmeEnt3,serviceExpend1,serviceExpend2,serviceExpend3,deviceDevote1,deviceDevote2,deviceDevote3,contactAddress" +
",contactName,contactEmail,contactPhone,contactPostcode,contactMobile,contactFax,informationNote";
然后 就是利用反射去判断是不是为空
/**
* 判断项目是否有空值
* @param storeAlternative
* @return
*/
private boolean chenkStore(StoreAlternative storeAlternative){
boolean bool = false;
Class proinfoClass = null;
try {
//映射类
proinfoClass = Class.forName("cn.fulong.smefund.entity.StoreAlternative");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//获取映射类里面的属性
Field[] field = proinfoClass.getDeclaredFields();
StringBuilder sb = new StringBuilder();
String propName = "";
String propNameGetter = "";
for(int i=0; i<field.length; i++) {
propName = "";
propNameGetter = "";
sb = new StringBuilder();
propName = field[i].getName();
if(this.validProp(propName)){//如果是需要判空的字段,就进行判空
sb.append(Character.toUpperCase(propName.charAt(0)));
sb.append(propName.substring(1));
propNameGetter = sb.toString();
try {
Method method = storeAlternative.getClass().getMethod("get"+propNameGetter);
if(method.invoke(storeAlternative) == null) {
bool = false;
break;
}else{
bool = true;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
return bool;
}
这样 就省去了很多麻烦