我注意到在SugarORM中,允许对象调用object.save()
,即使save()
实际上没有直接在对象中实现,并且所有对象都有在顶部声明的注释@Table
该课程。
如果一个对象所做的只是使用注释,它如何执行一个函数?
答案 0 :(得分:2)
在Java中,注释不能直接增强类;它只是其他工具读取的元数据。但是,有一些工具可以处理注释并自动生成其他代码。两个例子:
在Groovy中,注释可以直接增强类,因为它们可以触发在编译时静态应用的转换。常见转换包括@ToString
(添加友好的toString()
方法)和@EqualsAndHashCode
(根据类的属性生成这些方法)。
在Sugar ORM的这种特定情况下,save()
上定义了SugarRecord
等方法,因此直接扩展SugarRecord
的类可以使用它们。或者,the test cases involving annotated classes使用静态导入来解析这些方法。