クラスのメンバ変数の注釈を知りたい場合は、BeanInfo beanInfo = Introspector.getBeanInfo(User.class)
を使用してクラスをイントロスペクションし、BeanInfo.getPropertyDescriptors()
を使用して特定のプロパティを見つけ、クラスtype = propertyDescriptor.getPropertyType()
を使用してプロパティのクラスを取得します。メンバ変数のアノテーションを取得する方法は?
しかし、私はメンバ変数に注釈を追加する方法を知らないのですか?
私はtype.getAnnotations()
とtype.getDeclaredAnnotations()
を試しましたが、どちらもクラスの注釈を返します。たとえば:@Column、クラスではなく住所の注釈(@Entity、@Table、@Cache):
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
{
...
}
私はアドレスの注釈を取得したいです。それを達成する方法?ありがとう。
public void getAnnotations(Class clazz){
for(Field field : clazz.getDeclaredFields()){
Class type = field.getType();
String name = field.getName();
field.getDeclaredAnnotations(); //do something to these
}
}
ここケースのようだとしてあなたは、DBオブジェクトをコピーする場合に便利かもしれません@Bozhoマイウェイ。別のDBエンティティになるはずのコピーは、同じIDを持つことはできません。一般的なコピーアルゴリズムは、注釈 '@Id'を持つものを除外することができます。 – Hok