package annotationTest;
import annotationTest.Person;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class test {
public static void main(String[] args) {
try {
Person person1=new Person("11",23);
Person person2=new Person("luo",19);
person1.check(person1);
person2.check(person2);
}catch (Exception e) {
e.printStackTrace();
}
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Range {
int min() default 18;
int max() default 55;
import static tools.LogUtils.log;
import java.lang.reflect.Field;
import annotationTest.Range;
public class Person {
@Range(min=22,max=55)
public int age;
@Range(min=1,max=20)
public String name="";
public Person(String name,int age) {
this.setName(name);
this.setAge(age);
public int getAge() {
return age;
public void setAge(int age) {
this.age = age;
public String getName() {
return name;
public void setName(String name) {
this.name = name;
public void check(Person person) throws IllegalArgumentException, IllegalAccessException{
log.info(person.getClass().getFields().length);
for(Field field: Person.class.getFields()) {
Range range=field.getAnnotation(Range.class);
if(range!=null) {
Object value=field.get(person);
if((value instanceof String) && field.getName().equals("name")) {
if((((String) value).length()<range.min()) || ((String) value).length()>range.max()) {
throw new IllegalArgumentException("Invalid name: "+field.getName());
if((value instanceof Integer) && field.getName().equals("age")) {
if(((Integer) value)<range.min() || ((Integer) value)>range.max()) {
throw new IllegalArgumentException("Invalid age: "+field.getName());
Sign in to make a reply
净净一隅
package annotationTest;
import annotationTest.Person;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class test {
public static void main(String[] args) {
try {
Person person1=new Person("11",23);
Person person2=new Person("luo",19);
person1.check(person1);
person2.check(person2);
}catch (Exception e) {
e.printStackTrace();
}
}
package annotationTest;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Range {
int min() default 18;
int max() default 55;
package annotationTest;
import static tools.LogUtils.log;
import java.lang.reflect.Field;
import annotationTest.Range;
public class Person {
@Range(min=22,max=55)
public int age;
@Range(min=1,max=20)
public String name="";
public Person(String name,int age) {
this.setName(name);
this.setAge(age);
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void check(Person person) throws IllegalArgumentException, IllegalAccessException{
log.info(person.getClass().getFields().length);
for(Field field: Person.class.getFields()) {
Range range=field.getAnnotation(Range.class);
if(range!=null) {
Object value=field.get(person);
if((value instanceof String) && field.getName().equals("name")) {
if((((String) value).length()<range.min()) || ((String) value).length()>range.max()) {
throw new IllegalArgumentException("Invalid name: "+field.getName());
}
}
if((value instanceof Integer) && field.getName().equals("age")) {
if(((Integer) value)<range.min() || ((Integer) value)>range.max()) {
throw new IllegalArgumentException("Invalid age: "+field.getName());
}
}
}
}
}
}
}