在java中,可以在运行时使用注释读取字段值



我有一个像这样的类,MyAnnotation:

public class MyClass {
    @MyAnnotation
    public boolean bool;
    public boolean getBool(){
        return bool;
    }
    public voud setBool(boolean b){
        bool = b;
    }
}

有可能通过注释在运行时获得bool的值?

编辑:这是我要找的:

     public void validate(Object o) throws OperationNotSupportedException {
          Field[] flds = o.getClass().getDeclaredFields();
          for (Field field : flds) {
             if (field.isAnnotationPresent(NotNull.class)) {
                String fieldName = field.getName();
                Method m;
                Object value;
                try {
                   m = o.getClass().getMethod("get" + capitalize(fieldName), null);
                   value = m.invoke(o, null);
                   if (value == null) {
                      throw new OperationNotSupportedException("Field '" + fieldName + "' must be initialized.");
                   }
                } catch (Exception e) {
                   e.printStackTrace();
                }
             }
          }
       }
   private String capitalize(final String line) {
      return Character.toUpperCase(line.charAt(0)) + line.substring(1);
   }

不确定这是否是你想要的,但你可以这样做:

Object getValueForMyAnnotaion(MyClass obj) {
   Field[] fieldList = obj.getClass().getDeclaredFields();
   for (Field field : fieldList) {
       if (field.isAnnotationPresent(MyAnnotation.class)) {
          return field.get(obj);
       }
   }
}

请注意,它将返回Object,并且只针对具有注释的第一个成员,但它可以很容易地更改为您需要的内容。

相关内容

  • 没有找到相关文章

最新更新