反射参数校验
import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; public class Result { private Integer code; private String message; /** * 对外部提供的接口,有一些前置校验参数。 * */ public Result getInfo(Map<String, String> m) { //传统方式校验 if(m.get("org") == null){ return Result.error("机构号不能为空"); }else if(m.get("channel") == null){ return Result.error("渠道号不能为空"); }else if(m.get("name") == null){ return Result.error("姓名不能为空"); }else if(m.get("container") == null){ return Result.error("集装箱号码不能为空"); }else if(m.get("signNum") == null){ return Result.error("标志号号码不能为空"); } //...................
//反射方式校验 Result r = Result.isNull(m, "org","channel","name","container","signNum"); if(r.getCode() == -100){ return r; } /** * 业务处理 * */ } public static <T>Result isNull(T t,String ... arr){ try{ for(String s : arr){ //获得T类中的get()方法 Method m = t.getClass().getMethod("get", Object.class); //调用t类中的get()方法,传入参数s if(m.invoke(t, s) == null || m.invoke(t, s) == ""){ return Result.error(s+":不能为空"); } } }catch(Exception e){ return Result.error("unkonw exception"); } return Result.ok(); } //测试 public static void main(String[] args) { Map<String, String> m = new HashMap<>(); m.put("a", ""); Result r = Result.isNull(m, "a"); } public static Result error(String message){ Result r = new Result(); r.setCode(-100); r.setMessage(message); return r; } public static Result ok(){ Result r = new Result(); r.setCode(200); return r; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }