可以看到生成代劳类的代码异常的简短,重要就是遍历我们的mProxyMap,然后取得每一个ProxyInfo,最后经由过程mFileUtils.createSourceFile来创建文件对象,类名为proxyInfo.getProxyClassFullName(),写入的内容为proxyInfo.generateJavaCode().
看来生成Java代码的办法都在ProxyInfo琅绫擎。
c.生成Java代码
这里我们重要存眷其生成Java代码的方法。
下面重要看生成Java代码的办法:
- #ProxyInfo
- //key为id,value为对应的成员变量
- public Map<Integer, VariableElement> mInjectElements = new HashMap<Integer, VariableElement>();
- public String generateJavaCode(){
- StringBuilder builder = new StringBuilder();
- builder.append("package " + mPackageName).append(";\n\n");
- builder.append("import com.zhy.ioc.*;\n");
- builder.append("public class ").append(mProxyClassName).append(" implements " + SUFFIX + "<" + mTypeElement.getQualifiedName() + ">");
- builder.append("\n{\n");
- generateMethod(builder);
- builder.append("\n}\n");
- return builder.toString();
- }
- private void generateMethod(StringBuilder builder){
- builder.append("public void inject("+mTypeElement.getQualifiedName()+" host , Object object )");
- builder.append("\n{\n");
- for(int id : mInjectElements.keySet()){
- VariableElement variableElement = mInjectElements.get(id);
- String name = variableElement.getSimpleName().toString();
- String type = variableElement.asType().toString() ;
- builder.append(" if(object instanceof android.app.Activity)");
- builder.append("\n{\n");
- builder.append("host."+name).append(
推荐阅读
栈(stack)又称之为客栈是一个特别的有序表,其插入和删除操作都在栈顶进行操作,并且按照先辈后出,落后先出的规矩进交运作。如下图所示例如枪的弹匣,第一颗放进弹匣的枪弹反而在发射出去>>>详细阅读
地址:http://www.17bianji.com/lsqh/35453.html
1/2 1

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