Is there a way to use annotations in Java to replace accessors?(有没有办法在 Java 中使用注释来替换访问器?)
问题描述
我对 Java 5 注释有点陌生,我很好奇其中任何一个是否可行:
I'm a little new to the Java 5 annotations and I'm curious if either of these are possible:
这个注解会为你生成一个简单的getter和setter.
This annotation would generate a simple getter and setter for you.
@attribute
private String var = "";
@NotNull
注释表示变量不能为空,因此您不必每次都编写样板代码.
The @NotNull
annotation indicates that a variable connot be null so you don't have to write that boilerplate code every time.
/*
* @param s @NotNull
*/
public void setString(String s){
...
}
这些都行吗?如果可以的话,它们似乎是我写注释的第一件事.因为当我阅读文档时我看不到太多关于这些的内容,所以我假设这并不是注释的真正含义.任何方向都将不胜感激.
Will either of these work? They seem like the first things I would write annotations for if I could. Since I don't see much about these when I read the docs I'm assuming that it's not really what annotations are about. Any direction here would be appreciated.
推荐答案
注解处理发生在抽象语法树上.这是解析器创建并由编译器操作的结构.
Annotation processing occurs on the abstract syntax tree. This is a structure that the parser creates and the compiler manipulates.
当前的规范(链接来)说注释处理器不能改变抽象语法树.这样做的后果之一是不适合进行代码生成.
The current specification (link to come) says that annotation processors cannot alter the abstract syntax tree. One of the consequences of this is that it is not suitable to do code generation.
如果您喜欢这种功能,请查看 XDoclet.这应该为您提供我认为您正在寻找的代码生成预处理.
If you'd like this sort of functionality, then have a look at XDoclet. This should give you the code generation preprocessing I think you are looking for.
对于您的 @NonNull
示例,JSR-305 是注释集,用于增强软件缺陷检测,包括@NonNull
和 @CheckForNull
以及许多其他人.
For your @NonNull
example, JSR-305 is a set of annotations to enhance software defect detection, and includes @NonNull
and @CheckForNull
and a host of others.
编辑:Project Lombok 正好解决了 getter 和设置器生成.
Edit: Project Lombok solves exactly the problem of getter and setter generation.
这篇关于有没有办法在 Java 中使用注释来替换访问器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:有没有办法在 Java 中使用注释来替换访问器?


基础教程推荐
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 降序排序:Java Map 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01