1.自定义注解
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface FieldValidation {
boolean isNotNull() default true;
String fieldName();
boolean isPrecondition() default false;
String preconditionName() default "";
String[] preconditionVlaue() default {};
}
2.提取注解
public class ECarLoanApplyReq extends BasePublicObject
public class BasePublicObject {
public ResponseBase fieldValidation(){
ResponseBase rb = new ResponseBase();
FieldValidation fa = null;
Field tempField = null;
Class c = this.getClass();
Field[] fields = c.getDeclaredFields();//获取自己声明的各种字段
for (Field field : fields) {
if(field.isAnnotationPresent(FieldValidation.class)){//检测该元素是否被参数对应的注解修饰
fa = field.getAnnotation(FieldValidation.class);//获取注解对象
field.setAccessible(true);
try {
if(fa.isNotNull()){
if(field.get(this) == null)
return ResponseBase.buildErrorResponse("参数不正确,缺少"+fa.fieldName()+"!");
}else{
if(fa.isPrecondition()){
tempField = c.getDeclaredField(fa.preconditionName());
tempField.setAccessible(true);
if(fa.preconditionVlaue().length > 0 && tempField.get(this) != null){
if(arrayContains(fa.preconditionVlaue(),tempField.get(this).toString())){
if(field.get(this) == null)
return ResponseBase.buildErrorResponse("参数不正确,缺少"+fa.fieldName()+"!");
}
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
return ResponseBase.buildErrorResponse("校验参数时发生错误:Class name : "+c.getSimpleName()+",field name : "+fa.fieldName()+"!");
}
}
}
return rb;
}
}
3.调用:ResponseBase rb = loanApplyReq.fieldValidation();
资料:http://blog.csdn.net/ljyangscut/article/details/51287089