前言
CustomTestApplicationProcessor类处理@CustomTestApplication。当前使用该注解的节点校验并且生成CustomTestApplicationMetadata对象,针对该CustomTestApplicationMetadata对象再生成类。
用于测试。
校验并且生成CustomTestApplicationMetadata对象
@CustomTestApplication修饰节点规则
-
@CustomTestApplication修饰节点必须是类或接口;
-
@CustomTestApplication注解中的value值类型(及其深层次遍历到的类型)不能使用@HiltAndroidApp修饰;
-
@CustomTestApplication注解中的value值类型(及其深层次遍历到的类型)不能存在@Inject修饰的变量或普通方法或构造函数;
-
@CustomTestApplication注解中的value值类型必须存在并且是Application或其子类。
CustomTestApplicationMetadata对象
-
TypeElement element:当前@CustomTestApplication修饰节点,
-
ClassName baseAppName:@CustomTestApplication注解中的value值类(一定存在并且是Application或其子类)。
CustomTestApplicationGenerator生成类
demo:
@CustomTestApplication(BaseApplication.class)
class CustomTestApplication{}
生成代码如下:
@Generated("CustomTestApplicationProcessor")
public final class CustomTestApplication_Application extends BaseApplication interface GeneratedComponentManager<Object>,TestApplicationComponentManagerHolder{
private TestApplicationComponentManager componentManager;
protected final void attachBaseContext(Context base) {
super.attachBaseContext(base);
componentManager = new TestApplicationComponentManager(this);
}
@Override
public final GeneratedComponentManager<Object> componentManager(){
return componentManager;
}
@Override
public final Object generatedComponent(){
return componentManager.generatedComponent();
}
}
总结
当前@CustomTestApplication修饰的节点应用于测试环节。
源码的学习让我们明智,有一种授之以渔的感觉。