如何获得@Attribute名称?

时间:2018-03-15 13:52:14

标签: java spring-annotations

我有这个带注释的java类,想从 @Attribute(name =" HSS-EsmApnId")获取名称,然后从以下String中获取值制作地图。

import java.util.List;

import javax.naming.Name;

import org.springframework.ldap.odm.annotations.Attribute;
import org.springframework.ldap.odm.annotations.Entry;
import org.springframework.ldap.odm.annotations.Id;

@Entry(objectClasses = {"HSS-EsmApn"}, base = "nodeName=jambala")
public final class Apn {

    @Id
    private Name dn;

    @Attribute(name = "HSS-EsmApnId") // this name would be the key
    private String apnId; // and apnId would be the value

    @Attribute(name = "HSS-EsmApnName")
    private String apnName;

    @Attribute(name = "groupId")
    private String groupId;

    @Attribute(name = "objectClass")
    private List<String> objectClass;

    @Attribute(name = "ownerId")
    private String ownerId;

    @Attribute(name = "permissions")
    private String permissions;

    @Attribute(name = "shareTree")
    private String shareTree;

    @Override
    public String toString() {
        return "Apn [dn=" + dn + ", apnId=" + apnId + ", apnName=" + apnName + ", groupId=" + groupId + ", objectClass="
            + objectClass + ", ownerId=" + ownerId + ", permissions=" + permissions + ", shareTree=" + shareTree
            + "]";
    }
}

我尝试过使用Annotation,但我只能获得 @Entry 注释值。

    Class<?> clazz = Apn.class;
    System.out.println(clazz);

    java.lang.annotation.Annotation[] annotations = clazz.getAnnotations();
    for (Annotation annotation : annotations) {
        System.out.println(annotation.annotationType());
    }

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:1)

您要求级别注释。您想要做的是获取字段级别注释:

Field field = Apn.class.getDeclaredField("apnId");
Annotation[] annotations = field.getAnnotations();

此外,如果您想获得特定的注释,可以使用field.getAnnotationsByType(Entry.class),这样您就可以根据需要访问注释的特定类及其参数,例如name。你的情况。

相关问题