今天在写接口的时候,发现有些接口需要返回特定几个字段,往往这些字段都不会写多一个Vo实体,因为太费事了。一般做法都是写成Map<String, Object>,再将map值放入返回值中。
写一个这样的接口到没什么问题,但今天多写了几个,发现每个接口都得这样重新声明map,感觉很费事和时间。突然想起了java的变长参数,就想着看看能不能传入key、value再重新封装成map,这样就省事多了。
一般web项目都已经组装好了统一的返回实体,在我的项目中,实体为SysReplyVo<T>,直接重载ok方法
/**
* 成功,有参,不定长参 转化为map, key,value,key,value
*
* @param data
* @param <T>
* @return
*/
public static <T> SysReplyVo ok(Object... data) {
if (data.length % 2 == 1) {
return SysReplyVo.error("参数长度不对");
}
Map<String, Object> map = new HashMap<>(data.length / 2);
for (int i = 0; i < data.length; i = i + 2) {
map.put(String.valueOf(data[i]), data[i + 1]);
}
return new SysReplyVo<>(map);
}
这样修改后,如果我想返回特定几个字段的结果,直接return SysReplyVo.ok(key,value,key,value)