@AutoModule
类中收集
GeneratedModule
的所有类,由
AutoModuleProcessor
@GenerateAutoModule
注释的类别应生成另一类,并用@AutoModule
注释(由GenerateAutoModuleProcessor
创建)@Component
的类应生成Generated${ClassName}
:ComponentProcessor
:@Component
注释在参数中具有GeneratedModule
(GeneratedModule
在完成之前不存在)AutoModuleProcessor
相关代码应如下:@Component
电流设置需要
ComponentProcessor
如果我每回合都会生成文件,我会得到
class ExistingModule
@AutoModule
class SimpleAutoModule
@GenerateAutoModule
class ComplexAutoModule
@Component(
// GeneratedModule not exists before AutoModuleProcessor execution
[ExistingModule::class, GeneratedModule::class]
)
interface SourceComponent
。
如果我将文件生成转移到
@AutoModule
class GeneratedComplexAutoModule
@Module(
[
com.example.SimpleAutoModule::class,
com.example.GeneratedComplexAutoModule::class
]
)
class GeneratedModule
class GeneratedSourceComponent
,则无法生成
AutoModuleProcessor
,因为FileAlreadyExistsException
在执行时无法解决。
我获得的唯一解决方案是在
finish()
到GeneratedSourceComponent
GeneratedModule
公元前比硬编码更好:您可以合并
ComponentProcessor
和AutoModuleProcessor
。然后,您可以将所有元素推迟到没有更多元素为止。
2