如何获取@Attribute 名称?
How to get @Attribute name?
我已将此注释为 java class 并希望从 @Attribute(name = "HSS-EsmApnId") 获取名称,然后从以下字符串中获取值以制作地图。
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
+ "]";
}
}
我尝试使用注释,但我只能获得 @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 级注释。你想要做的是获取 field 级注释:
Field field = Apn.class.getDeclaredField("apnId");
Annotation[] annotations = field.getAnnotations();
另外,如果你想得到具体的annotation,你可以使用field.getAnnotationsByType(Entry.class)
,这样你就可以访问到具体的class的annotation及其参数,比如name
,视情况而定。
我已将此注释为 java class 并希望从 @Attribute(name = "HSS-EsmApnId") 获取名称,然后从以下字符串中获取值以制作地图。
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
+ "]";
}
}
我尝试使用注释,但我只能获得 @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 级注释。你想要做的是获取 field 级注释:
Field field = Apn.class.getDeclaredField("apnId");
Annotation[] annotations = field.getAnnotations();
另外,如果你想得到具体的annotation,你可以使用field.getAnnotationsByType(Entry.class)
,这样你就可以访问到具体的class的annotation及其参数,比如name
,视情况而定。