它的第一个,注释类(蛋)或用过的类(鸡)是什么?

时间:2015-06-22 23:42:21

标签: android-annotations annotation-processing

当然,我没有读过一些基本的东西,而且看起来很奇怪,但我不知道。

假设您使用

@Pref
SharedPreferencesInterface_ prefs;

我有使用Gradle配置的IDE(构思),并且我生成了可以在另一个类中使用的SharedPreferencesInterface_类

{{1}}

但是假设有人现在下载该项目,该如何使用?因为使用SharedPreferencesInterface_的类不能编译,因为该类不存在,并且该类因编译错误而不存在...

它是如何制作的?当然有一种方法......配置为首先编译某些类?

非常感谢帮助。

问候语。

1 个答案:

答案 0 :(得分:2)

  

但是假设有人现在下载该项目,该如何使用?因为   使用SharedPreferencesInterface_的类不能编译,因为   该类不存在,并且该类不存在,因为   编译错误......

当您在完整版本中编译项目时(当尚未生成任何类时),这是相同的情况。实际上Gradle总是在Android项目中进行完整的构建。除了standard AndroidAnnotaions config之外,根本不需要任何配置。

实际上这是有效的,因为编译器在将类传递给注释处理之前不会完全编译它。很明显它不应该,因为类可能引用生成的类,这些类只在处理后才可用。首先,编译器创建类的模型,仅解析它们的结构(字段,方法,返回类型,参数类型等),但不解析实现。它还允许在字段上丢失类型。如果找到缺少的类型,则会将其分配给TypeKind.ERROR,但该类型的名称仍可用于注释处理器。处理器完成后,它会生成缺少的类,因此类的类型不再是TypeKind.ERROR,编译可以成功。