什么是第一个,带注释的 class(鸡蛋)或使用的 class(鸡)?

What its the first, the annotated class (egg) or used class (chicken)?

当然我没有读过基础的东西,看起来很奇怪,但我想知道。

假设你使用

@SharedPref
public interface SharedPreferencesInterface {
    @DefaultBoolean(true)
    boolean showDeviceName();

我用 Gradle 配置了 IDE(想法),我生成了 SharedPreferencesInterface_ class,我可以在另一个 class 中使用它作为

@Pref
SharedPreferencesInterface_ prefs;

但是假设现在有人下载了这个项目,怎么用呢?因为class where used SharedPreferencesInterface_ not compile because the class does not exist, and the class does not exist because compilation errors ...

它是怎么做出来的?肯定有办法...配置为先编译某些 classes?

感谢帮助。

一句问候。

But suppose someone now download the project, how can the use? Because the class where used SharedPreferencesInterface_ not compile because the class does not exist, and the class does not exist because compilation errors ...

这与在完整构建中编译项目时的情况相同(当尚未生成 classes 时)。实际上 Gradle 目前总是在 Android 个项目中进行完整构建。除了 standard AndroidAnnotaions config.

之外根本不需要配置

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