@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface MyNotNull { }
@MyAnnotation(name = "test", value = "value", path = "com.zhan.guo.Test") public class Account { @MyAnnotation(name = "cardNo", value = "cardNo", path = "com.zhan.guo.Test.cardNo") @MyNotNull private String cardNo; @MyAnnotation(name = "name", value = "name", path = "com.zhan.guo.Test.name") @MyNotNull private String name; @MyAnnotation(name = "money", value = "money", path = "com.zhan.guo.Test.money") private int money; }
public class MyNotNullTest { public static void main(String[] args) throws IllegalAccessException { Account account = new Account(); account.setMoney(100); account.setName("name"); Class clazz = account.getClass(); Field[] declaredFields = clazz.getDeclaredFields(); for (Field field : declaredFields) { field.setAccessible(true); MyNotNull annotation = field.getAnnotation(MyNotNull.class); if (annotation != null) { String o = (String)field.get(account); if (o==null){ System.out.println(field.getName()+"不能为空"); } } } } }