static void check(Person person) throws IllegalArgumentException, ReflectiveOperationException {
for (Field field : person.getClass().getFields()) {
Range range = field.getAnnotation(Range.class);
if (range != null) {
Object value = field.get(person);
logger.info("name:{},value:{},type:{}",field.getName(),value,field.getType().getSimpleName());;
// TODO:
switch(field.getType().getSimpleName()) {
case "String": String tmp1 = (String)value;
logger.info("tmp1 min={},length={},max={}",range.min(),tmp1.length(),range.max());
if(range.min()>tmp1.length()){
throw new IllegalArgumentException("String is too short");
}
if(tmp1.length()>range.max()) {
throw new IllegalArgumentException("String is too long");
}break;
case "int": int tmp2 = (int)value;
logger.info("tmp2 min={},value={},max={}",range.min(),tmp2,range.max());
if(range.min()>tmp2) {
throw new IllegalArgumentException("Int is too small");
}
if(tmp2>range.max()) {
throw new IllegalArgumentException("Int is too big");
}
break;
}
}
}
}
金黄新世界秩序