获取带注释字段的名称

时间:2014-08-17 10:57:05

标签: java reflection annotations

如果我已经定义了这样的注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Input {

    String type() default "text";
    String name();
    String pattern() default "";

}

并将其用于此方法:

@Column(name="nome", unique = true, nullable = false)
@Order(value=1)
@Input
private String nome;

@Column(name="resumo", length=140)
@Order(value=2)
@Input
private String resumo;

是否有任何方法可以为属性name分配带注释的字段的名称(例如:对于字段String nome,值为nome,对于字段{{1}会是String resumo)?

1 个答案:

答案 0 :(得分:4)

您无法将注释变量默认为字段名称。但是,无论您在何处处理注释,都可以进行编码,使其默认为字段名称。以下示例

Field field = ... // get fields
Annotation annotation = field.getAnnotation(Input.class);

if(annotation instanceof Input){
    Input inputAnnotation = (Input) annotation;
    String name = inputAnnotation.name();
    if(name == null) { // if the name not defined, default it to field name
        name = field.getName();
    }
    System.out.println("name: " + name); //use the name
}