Java 如何获取@Attribute name?

Java 如何获取@Attribute name?,java,spring-annotations,Java,Spring Annotations,我有这个带注释的java类,希望从@Attribute(name=“HSS esmaspind”)中获取名称,然后从下面的字符串中获取值以生成映射 import java.util.List; import javax.naming.Name; import org.springframework.ldap.odm.annotations.Attribute; import org.springframework.ldap.odm.annotations.Entry; import org.

我有这个带注释的java类,希望从@Attribute(name=“HSS esmaspind”)中获取名称,然后从下面的字符串中获取值以生成映射

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
            + "]";
    }
}
import java.util.List;
导入javax.naming.Name;
导入org.springframework.ldap.odm.annotations.Attribute;
导入org.springframework.ldap.odm.annotations.Entry;
导入org.springframework.ldap.odm.annotations.Id;
@条目(objectClasses={“HSS-EsmApn”},base=“nodeName=jambala”)
公开期末班{
@身份证
私名dn;
@属性(name=“HSS-esmpnid”)//此名称将是密钥
私有字符串apnId;//和apnId将是值
@属性(name=“HSS ESMAPNAME”)
私有字符串名称;
@属性(name=“groupId”)
私有字符串groupId;
@属性(name=“objectClass”)
私有列表对象类;
@属性(name=“ownerId”)
私有字符串所有者ID;
@属性(name=“权限”)
私有字符串权限;
@属性(name=“shareTree”)
私有字符串共享树;
@凌驾
公共字符串toString(){
返回“Apn[dn=“+dn+”,apnId=“+apnId+”,apnName=“+apnName+”,groupId=“+groupId+”,objectClass=”
+objectClass+”,ownerId=“+ownerId+”,permissions=“+permissions+”,shareTree=“+shareTree
+ "]";
}
}
我已尝试使用注释,但我只能获取@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());
    }
Class clazz=Apn.Class;
系统输出打印(clazz);
java.lang.annotation.annotation[]annotations=clazz.getAnnotations();
用于(注释:注释){
System.out.println(annotation.annotationType());
}

非常感谢您的帮助。

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

Field field = Apn.class.getDeclaredField("apnId");
Annotation[] annotations = field.getAnnotations();
另外,如果您想获得特定的注释,可以使用
field.getAnnotationsByType(Entry.class)
,这将使您能够访问注释的特定类及其参数,如您的案例所需的
名称

请查看