需求:传参时对实体类中的参数进行判断,对不需要进行判断的参数过滤不判断,如果为空就抛出异常。
思路:通过反射获取对象中的key,value,对值进行判断是否为空。
一:自定义注解
@Documented
@Target({ElementType.FLELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldInterface{
String name() default "";
}
二:实体类
public class User{
@FieldInterface(name = "用户名")
private String userName;
@FieldInterface(name = "密码")
private String password;
private String idNo;
}
三:工具类
public final class FieldVerifyUtils{
public void verifyObject(Object object){
Class cla = object.getClass();
Field[] fields = cla.getDeclareFields();
for(fields field : fields){
field.setAccessible(true); //设置可访问私有属性
//判断属性上是否存在此注解(自定义注解)
boolean boo = field.isAnnotationPresent(FieldInterface.class);
//存在就进行校验
if(boo){
FieldInterface fi = field.getAnnotation(FieldInterface.class);
//如果注解里的name属性为空就抛出异常,(是否需要这一步自行选择)
if("".equals(fi.getname())){
//自定义异常,自行选择抛出
throw new zidingyiException("100001",xiaoxi);
}
Object fieldValue = null;
try{
fieldValue = field.get(Object);
}catch(IllegalAccessException e){
e.printStackTrace();
}
if(fieldValue == null ; "".equals(fieldValue)){
/自定义异常,自行选择抛出
throw new zidingyiException("100001",fi.getname()+"为空");
}
}
}
}
}
手动打的,有错的地方请谅解,欢迎各位大佬进行指点,小弟还是个小小菜鸡