如何获取成员变量的注释?

2022-08-31 14:51:49

我想知道一个类的某个成员变量的注解,我用来反省一个类,并使用,来查找特定的属性,并使用Class来获取属性的Class。BeanInfo beanInfo = Introspector.getBeanInfo(User.class)BeanInfo.getPropertyDescriptors()type = propertyDescriptor.getPropertyType()

但是我不知道如何将注释添加到成员变量中?

我尝试了 ,和 ,但两者都返回了类的注释,而不是我想要的。例如:type.getAnnotations()type.getDeclaredAnnotations()

class User 
{
  @Id
  private Long id;

  @Column(name="ADDRESS_ID")
  private Address address;

  // getters , setters
}

@Entity
@Table(name = "Address")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
class Address 
{
  ...
}

我想得到地址的注释:@Column,而不是类地址的注释(@Entity,@Table,@Cache)。如何实现它?谢谢。


答案 1
for(Field field : cls.getDeclaredFields()){
  Class type = field.getType();
  String name = field.getName();
  Annotation[] annotations = field.getDeclaredAnnotations();
}

请参见:http://docs.oracle.com/javase/tutorial/reflect/class/classMembers.html


答案 2

每个人都描述了获取注释的问题,但问题在于注释的定义。您应该在注释定义中添加一个:@Retention(RetentionPolicy.RUNTIME)

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MyAnnotation{
    int id();
}