是否有 Java 库使用注释来生成代码?

发布于 2024-07-29 11:16:40 字数 186 浏览 4 评论 0原文

有谁知道使用 这篇文章自动生成标准Java类的标准对象方法toString()、equals()和hashcode()?

Is anyone aware of a library that uses the the techniques (annotations and classworking) described in this article for automatically generating the standard Object methods toString(), equals() and hashcode() for standard java classes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

颜漓半夏 2024-08-05 11:16:41

是的,Lombok 项目就是这样做的。 请参阅 http://projectlombok.org 。 它不仅支持javac,还支持Eclipse。 因此这些方法不在源代码中,而是显示在大纲视图中。

Yes, project Lombok does this. See http://projectlombok.org . It not only supports javac, but also Eclipse. So the methods are not in the source code, but are displayed in the outline view.

权谋诡计 2024-08-05 11:16:41

我当然还没有看到这一点,而且我不太确定从中可以获得什么价值。 我发现在搜索日志文件时,自动生成 toString 通常不是您想要的,并且大多数 IDE 都会有工具允许您生成 hashCodeequals 实现,尽管这些实现不会自动反映类中的任何架构修改。

实现此功能有 2 个选项:

  1. 编译时类注释,经过处理(例如由您的 IDE)以生成相关方法。 注释可以修改它们在其中声明的类的生成字节码吗?我认为这种方法是一个非常糟糕的主意,因为你无法通过查看源代码
  2. 运行时注释 来判断发生了什么相关方法表明应通过专门机制进行评估。 这仍然需要您声明并注释您的方法,而且我也不确定您如何实际拦截方法调用以在任何情况下使用注释

I certainly haven't seen this and I'm not really sure what value would be gained from it. I find that automatic toString generation is not usually what you want when scouring log files and most IDEs will have tools to allow you to generate hashCode and equals implementations, although granted these do not automatically reflect any schema modifications within your class.

There would be 2 options for implementing this:

  1. Compile-time class annotation which is processed (e.g. by your IDE) to generate the relevant methods. Can annotations modify the generated bytecode of the classes they are declared in? I think this appraoch is a really bad idea because you can't tell what is going on by looking at your source code
  2. Runtime annotation on the relevant methods to indicate that they should be evaluated via the special mechanism. This still requires you to declare and annotate your methods and I'm also not sure how you would actually intercept method calls to use the annotation in any event
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文