Jon*_*Jon 18 java annotations development-environment
我很想知道人们认为哪些Java注释在开发过程中最有用.这不一定限于核心Java API,您可以包含您在第三方库中找到的注释或您自己开发的注释(确保包含指向源的链接).
我真的对常见的开发任务很感兴趣,而不是知道为什么@ManyToOne(optional=false)JPA很棒......
包括注释和对一般开发有用的原因的描述.
Bre*_*ode 21
我为其他用户发了一堆upvotes,但只是为了给我的两分钱,我在开发中使用的唯一三个注释是编译器直接使用的主要注释:
@Override - 当你覆盖另一个方法时,非常适合在代码中使它显式化.如果你没有按照你认为的方式覆盖方法,那么还有被标记为编译错误的额外好处(参见其他SO帖子).此标志通知编译器您打算覆盖某些内容,因此如果不这样(例如,您忘记了方法签名中的参数),编译器将捕获它.
@Deprecated - 指出你要标记的任何东西,从这一点开始不应该使用.编译器将生成警告,以使用您标记为已弃用的任何代码元素.一般来说,弃用表示"过去曾出现在这里,但未来的版本可能会消失." 确保你也使用相关的"@deprecated"Javadoc标志,以告诉人们应该使用它们.
@SuppressWarnings - 告诉编译器抑制它否则会生成的特定警告.这对于有意使用弃用方法的内容非常有用,您可以阻止弃用警告.我倾向于使用它来阻止每个人在序列化类上最喜欢的"序列化UID"警告(无论你是否应该这样做是另一次辩论).对于那些您知道正在做的事情正在产生警告的情况,只是方便,但您100%确定这是您想要的正确行为.
查看Sun Annotations Guide并查看"编译器使用的注释"部分.对这三个问题进行了相当冗长的讨论.
Guu*_*uus 11
我发现Brian Goetz在他的书"Java Concurrency In Practice"中定义的与并发相关的注释非常有用:
它们特别有用,因为FindBugs具有使用它们的模式.
可以在http://www.javaconcurrencyinpractice.com/免费获得jar和文档.
@Override有我的投票.它可以立即清楚您的方法是什么,并使您的代码更具可读性.
@Deprecated
@deprecated从特定方法的javadoc注释中删除,但是这个注释是一种很好的方法,可以使它成为关于方法本身的元信息,而不是文档中的注释.)我个人一直在看JSR303 Bean Validation及其提供的注释,我想这些将变得更加普遍,到目前为止只有少数JSR实现,但是它们提供了注释,例如:
@NotNull private String name;
@NotNull @Size(min = 5, max = 30) private String address;
Run Code Online (Sandbox Code Playgroud)
更多信息请访问:http://jcp.org/en/jsr/detail?id = 303
这些应该是有用的,您可以在项目中定义它们以更好地传达意图:
以下是我在日常开发中使用的一些注释
春天:
单位:
JPA:
我只包含了最重要的部分。您可以从以下链接中找到有关所有 JPA 注释的详细信息。
http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html