gpt4 book ai didi

java - 对象可以通过注释扩展功能吗? (SugarORM 示例)

转载 作者:行者123 更新时间:2023-12-01 09:35:41 25 4
gpt4 key购买 nike

我注意到在 SugarORM 中,对象可以调用 object.save() 即使 save() 实际上并未直接在对象和所有对象中实现在类的顶部声明了注释@Table

如果对象所做的只是使用注释,那么它如何执行功能?

最佳答案

在 Java 中,注释不能直接增强类;它只是其他工具读取的元数据。但是,有一些工具可以处理注释并自动生成附加代码。两个例子:

  • Spring Roo 使用注释生成 AspectJ 类型间声明(基本上是类的外部附加组件),这些声明被编译到最终的类文件中。
  • Lombok 使用编译器扩展来支持对 Java(或 Groovy)类执行转换的许多特定注释,例如添加样板构造函数和 getter/setter。 Lombok 使用的方法深入到编译器内部,并且相当脆弱。

在 Groovy 中,注释可以直接增强类,因为它们可以触发在编译时静态应用的转换。常见的转换包括@ToString(添加友好的toString()方法)和@EqualsAndHashCode(根据类的属性生成这些方法)。/p>

在 Sugar ORM 的这种特定情况下,诸如 save() 之类的方法是在 SugarRecord 上定义的,因此直接扩展 SugarRecord 的类可以使用他们。或者,the test cases involving annotated classes使用静态导入来解析这些方法。

关于java - 对象可以通过注释扩展功能吗? (SugarORM 示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38964184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com