当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在Java中使用注释来替换访问器?

如何解决《有没有办法在Java中使用注释来替换访问器?》经验,为你挑选了2个好方法。

我对Java 5注释有点新意,我很好奇其中任何一个都是可能的:

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

@attribute
private String var = "";

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

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

这些都可以吗?如果可以的话,它们似乎是我会写注释的第一件事.因为当我阅读文档时,我没有看到太多这些,我假设它不是真正的注释.这里的任何方向将不胜感激.



1> jamesh..:

注释处理发生在抽象语法树上.这是解析器创建和编译器操作的结构.

当前的规范(链接来)说,注释处理器不能改变抽象语法树.其中一个后果是它不适合进行代码生成.

如果你想要这种功能,那么看看XDoclet.这应该给你代码生成预处理我认为你正在寻找.

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

编辑:Project Lombok完全解决了getter和setter生成的问题.



2> Jirka..:

Getters/Setters:是的,这是可能的.的 项目龙目(http://projectlombok.org/index.html)定义用于生成getter/setter方法和多个注解.

所以举个例子

@lombok.Data;
public class Person {
   private final String name;
   private int age;
}

将生成名称的getter(不是setter,因为它是final)和getter/setter for age.它也将产生getName,getAge,setAge并construtor初始化必填字段(名字).添加equals将生成初始化两个字段的构造函数.

还有其他注释和参数可以让您控制访问权限(如果您的getter受到保护或公开),名称(getName或名称?)等等.还有更多.例如,我真的很喜欢扩展方法.

龙目岛非常容易使用.只需下载jar并使用注释,然后可以在代码中使用getter/setter而不会实际拼写出来.此外,像Netbeans这样的IDE支持这一点,因此您可以在代码完成,导航等中看到getter/setter.注释仅在编译期间使用,而不是在运行时使用,因此您不会使用jar来分发lombok.

NotNull:这是由findbugs和IdeaJ IDE支持的,也许是其他人

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有