有没有一种方法可以使用Java中的注释来替换访问器?


问题内容

我对Java 5注释有点陌生,我很好奇这两种方法是否可行:

此注释将为您生成一个简单的getter和setter。

@attribute
private String var = "";

@NotNull注解表明变量是粗野,空,这样你就不必每次都写样板代码。

/*
 * @param s @NotNull
 */
public void setString(String s){
    ...
}

这些都可以吗?如果可能的话,它们似乎是我要为其编写注释的第一件事。由于我在阅读文档时对这些内容了解不多,因此我假设注释并不是真正的含义。这里的任何方向将不胜感激。


问题答案:

注释处理发生在抽象语法树上。这是解析器创建并由编译器操纵的结构。

当前的规范(即将出现的链接)说,注释处理器不能更改抽象语法树。其结果之一是不适合进行代码生成。

如果您需要这种功能,请查看XDoclet。这应该为您提供我认为正在寻找的代码生成预处理。

对于您的@NonNull示例,JSR-305是一组注释,用于增强软件缺陷检测,并且包括@NonNull@CheckForNull以及许多其他注释

编辑龙目岛项目正好解决了吸气剂和塞特一代的问题。