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

标签 java reflection annotations beaninfo

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

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

我尝试了 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)。如何实现呢?谢谢。

最佳答案

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

关于java - 如何获取成员变量的注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4453159/

相关文章:

Java,网格布局问题。难以放置元件

hibernate - org.hibernate.AnnotationException : Unknown Id. 生成器:ID_GENERATOR

java - TestNG:@BeforeClass 方法失败时会跳过所有后续测试类吗?

c++ - C++派生类中的反射工厂无法访问 protected 方法?

c# - 允许或禁止方法在 .NET 中运行

c# - .NET/C# - 反射 - 曾经使用过的 System.IO.File

ios - 如何从 Dynamic NSMutableArray 添加坐标到 CLLocationCoordinate2D?

java - 创建新对象时使用字符串作为标识符

java - 掷骰子的概率。为什么我的代码在运行程序后显示错误消息?

java - 使用java创建复杂的pdf