有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java getDeclaredAnnotations没有从注释返回一个属性

java getDeclaredAnnotations没有从注释返回一个属性

步骤:

1)注释存在于动态编译和加载的外部Java类(Carrier.Java)中:

@Facets(xpath = "/Carrier/Carrier_Id", displayString = "Carrier")
private String carrier_Id;

2)注释@Facets具有以下定义:

@Target(value = { ElementType.FIELD, ElementType.METHOD,ElementType.PARAMETER,
    ElementType.TYPE })

@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Facets {

@Target(value = { ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER,
        ElementType.TYPE })
@Retention(value = RetentionPolicy.RUNTIME) 
public static @interface FacetDefinition {
    String xsdAttributeName() default VOID_STRING;
}

@FacetDefinition
String xpath() default VOID_STRING;

@FacetDefinition
String entityName() default VOID_STRING;

3)下面的代码用于从动态加载的类-(Carrier.class)检索注释属性:

Annotation[] annotations = field2.getDeclaredAnnotations();
for(Annotation annotation : annotations){

 if(annotation instanceof Facets)
 {
  Facets myAnnotation = (Facets) annotation;
  xpath = myAnnotation.xpath();
  displayName = myAnnotation.displayString();
  }

4)一个属性-xpath的值返回正确,但第二个属性-displayString始终作为空字符串返回

显示字符串值存在于载波中。类文件:

javap -v Carrier.class
 #38 = Utf8               xpath
 #39 = Utf8               /Carrier/Carrier_Id
 #40 = Utf8               displayString
 #41 = Utf8               Carrier

但是getDeclaredAnnotations没有检索此值,而是返回一个空字符串

有人能帮我做这个吗


共 (0) 个答案