Android 面试题咨询 “编译中生成的类,怎么让外部调用(不能先编译)”
資深大佬 : zpxshl 6
如题。 某大厂的面试题, 求大佬指点下思路或者给个关键字。
大佬有話說 (19)
如题。 某大厂的面试题, 求大佬指点下思路或者给个关键字。
很久不用这个库了,可以顺着 ButterKnife.bind 入口往里翻就能找到答案(如果它没改实现方案的话)
1. 注解的处理流程是在编译之前的. 所以其实你就直接引用你要生成的类就好. 因为注解在编译前处理, 所以编译是可以正常通过的. 如果不想在 build 之前 Android Studio 显示错误的话, 通常偷取一个接口和一个工厂类 /方法, 里面会用放射的方式来创建实现类.
2. Transform 流程可以直接修改字节码, 是在编译成 class 文件后进行的. 这里通常就是反射加工厂了.
还有一种可能是 SPI. 不过 SPI 的实现通常都是手写的实现的. 很少是编译期间生成的.