起首我们调用一下mProxyMap.clear();,因为process可能会多次调用,避免生成反复的代劳类,避免生成类的类名已存在异常。
然后,经由过程roundEnv.getElementsAnnotatedWith拿到我们经由过程@BindView注解的元素,这里返回值,按照我们的预期应当是VariableElement集合,因为我们用于成员变量上。
接下来for轮回我们的元素,起首检查类型是否是VariableElement.
这里一般情况会对生成的代劳类做一下缓存处理,比如应用Map存储下,没有再生成,这里我们就不去做了。
接下来,会将与该类对应的且被@BindView声明的VariableElement参加到ProxyInfo中去,key为我们声明时填写的id,即View的id。
b.生成代劳类
- @Override
- public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
- //...省略收集信息的代码,以及try,catch相干
- for(String key : mProxyMap.keySet()){
- ProxyInfo proxyInfo = mProxyMap.get(key);
- JavaFileObject sourceFile = mFileUtils.createSourceFile(
- proxyInfo.getProxyClassFullName(), proxyInfo.getTypeElement());
- Writer writer = sourceFile.openWriter();
- writer.write(proxyInfo.generateJavaCode());
推荐阅读
栈(stack)又称之为客栈是一个特别的有序表,其插入和删除操作都在栈顶进行操作,并且按照先辈后出,落后先出的规矩进交运作。如下图所示例如枪的弹匣,第一颗放进弹匣的枪弹反而在发射出去>>>详细阅读
地址:http://www.17bianji.com/lsqh/35453.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示