我编写了函数,遍历HTTP查询字符串参数,并通过读取字符串设置两个POJO类属性。有些查询字符串参数属于第一类,有些属于另一类。
例如:http://example.com?crb=nmsa&cra=jasdlka&....
我正在从Map
Pojo pojo = new Pojo();
for (Map.Entry<String, List<String>> queryParameter : queryParamsAndValues.entrySet()) {
System.out.println(queryParameter.getKey() + "/" + queryParameter.getValue());
queryFieldName = QueryFieldName.getLongName(queryParameter
.getKey());
switch (queryFieldName) {
case CREATED_BEFORE:
pojo.setCreatedBefore(queryParameter.getValue()
.get(0));
System.out.println("CREATED BEFORE");
break;
case CREATED_AFTER:
pojo
.setCreatedAfter(queryParameter.getValue().get(0));
System.out.println("CREATED AFTER");
break;
case FILTER_USAGE:
pojo.setFilterUsage(new BigInteger(queryParameter
.getValue().get(0)));
System.out.println("");
break;
case RESULT_CONTENT:
pojo2.setResultContent(new BigInteger(queryParameter
.getValue().get(0)));
System.out.println("Result Content: " + new BigInteger(queryParameter.getValue().get(0)));
break;
case RESPONSE_TYPE:
ResponseTypeInfo resTypeInfo = new ResponseTypeInfo();
resTypeInfo.setResponseTypeValue(new BigInteger(queryParameter.getValue().get(0)));
pojo2.setResponseType(resTypeInfo);
default:
System.out.println("DEFUALT");
}
}
reqPrim.setPojo(pojo);
}else{
reqPrim.setPojo(null);
}
因此在阅读查询字符串后设置了pojo
和pojo2
。
现在我想知道是否设置了pojo
的任何属性。
一个选项是每次设置pojo
属性时将标志设置为true。
有没有有效的方法?
答案 0 :(得分:0)
您可以实现您的pojo,将地图用作所有属性的容器。然后“任何属性集”转换为在该地图上调用“isEmpty()”。或者您直接使用内置的java properties。
答案 1 :(得分:0)
方法1
你可以拿着两张地图MAP<String,Object>
这把钥匙将成为pojo字段的名称,而值就是你传递给那个字段的地方,这样你就知道你设置了什么以及你有什么
Map<String,Object> pojoMap= new HashMap<>();
Map<String,Object> pojo2Map= new HashMap<>();
//when ever i set the field i put it in the map
pojo.setCreatedBefore(queryParameter.getValue().get(0));
pojoMap.put("createdBefore",queryParameter.getValue().get(0));
//you can check the field that are set
boolean isCreatedBeforeSet=(pojoMap.get("createdBefore")!=null);
方法2
你可以使用反射来检查空值,所以你在这里做什么
Map<String,boolean> pojoMap= new HashMap<>();
for(Field field : pojo.getClass().getFields()){
field.setAccessible(true);
pojoMap.put(field.getName(),f.get(pojo)!=null);
} //now pojoMap has all the names of your fields inside pojo and a boolean value
// to check if they are null or not