反射参数校验

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; } }

 

posted @ 2024-04-17 20:13  好mingzi给猪了  阅读(1)  评论(0编辑  收藏  举报