1

我想为我的 bean 编写自己的验证器和代码生成器。我定义注释并用它们注释我的字段。当我验证它们时:

public boolean validate(Object obj) {
    Class clazz = obj.getClass();
    for (Field field : clazz.getDeclaredFields()) {
        for (Annotation annotation : field.getAnnotations()) {
            ...//What to do here
        }
    }
    return false;
}

即我的注释是@NotEmpty

我应该喜欢if else if else ...还是有任何其他简短的方法(以及用来比较的是我看起来的注释,即@NotNull -> 带有annotation.equals(“NotNull”))?我的意思是如何实现它。另一方面,Lombok 项目有这样的注释:

@Getter @Setter

如何为我的类动态(或在编译之前)生成 getter 和 setter(我想只用 Java 实现它,而不需要任何其他库)?

4

1 回答 1

2

我认为您最好搜索所需的注释,而不是遍历所有注释。您可以像这样查看注释是否存在:

field.isAnnotationPresent(NotEmpty.class)

并获取注释并检查您可以使用的元素:

Annotation notEmpty = field.getAnnotation(NotEmpty.class)

要在运行时修改您的类,我认为就是您要寻找的。在这里您可以找到 ASM 的教程。

于 2012-06-11T13:30:27.827 回答