自定义注释驱动开发

时间:2012-06-11 13:23:46

标签: java annotations code-generation switch-statement

我想为我的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 - > with annotation.equals(“NotNull”) )?我的意思是如何实施它。另一方面,Lombok项目有一个类似的注释:

@Getter @Setter

如何为我的类动态地(或在编译之前)生成getter和setter(我想在没有任何其他库的情况下使用Java实现它)?

1 个答案:

答案 0 :(得分:2)

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

field.isAnnotationPresent(NotEmpty.class)

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

Annotation notEmpty = field.getAnnotation(NotEmpty.class)

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