java gettype成员变量,如何获得一个成员变量的注解?

I want to know a class's some member variable's annotations , I use BeanInfo beanInfo = Introspector.getBeanInfo(User.class) to introspect a class , and use BeanInfo.getPropertyDescriptors() , to find specific property , and use Class type = propertyDescriptor.getPropertyType() to get the property's Class .

But I don't know how to get the annotations added to the member variable ?

I tried type.getAnnotations() , and type.getDeclaredAnnotations() , but both return the Class's annotations , not what I want . For example :

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

{

...

}

I want to get the address's annotation : @Column , not class Address's annotations (@Entity , @Table , @Cache) . How to achieve it ? Thanks.

解决方案

This is a variation of the code mkoryak except it doesn't rely on Class.newInstance (and it compiles).

for(Field field : cls.getDeclaredFields()){

Class type = field.getType();

String name = field.getName();

Annotation[] annotations = field.getDeclaredAnnotations();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值