WX20200731-155033_PC.png 官网 https://github.com/square/javapoet 使用: 本次使用的是 implementation 'com.squareup...:javapoet:1.8.0' Javapoet 主要是配合 APT 工具使用 在编译期间 生成 java 代码.
Javapoet:是生成.java源文件的开源API github:https://github.com/square/javapoet 以生成一个HelloWrold.java文件为例: 1 package...final class HelloWorld { 4 public static void main(String[] args) { 5 System.out.println("Hello, JavaPoet...addParameter(String[].class, "args") 5 .addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet...== null"); 4 return new Builder(packageName, typeSpec); 5 } Builder是JavaFile中的一个静态内部类,由此可以看到 Javapoet
JavaPoet是一组用来生成 .java文件的JAVA API。...TypeSpec、ParameterSpec、MethodSpec、CodeBlock、JavaFile都是JavaPoet提供的用于描述一个源文件元素的类。...JavaPoet为每种元素,都提供了相应的Builder类。 JavaPoet提供了一套自定义的字符串格式化规则。...TypeSpec、ParameterSpec、MethodSpec、CodeBlock、JavaFile都是JavaPoet提供的用于描述一个源文件元素的类。...JavaPoet为每种元素,都提供了相应的Builder类。
开发 ) 【Android 组件化】路由组件 ( 路由组件结构 ) 【Android 组件化】路由组件 ( 注解处理器获取被注解的节点 ) 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet
文章目录 一、注解节点类型 二、JavaPoet 简介 三、注解处理器中使用 JavaPoet 生成代码 四、路由框架说明 五、博客资源 组件化系列博客 : 【Android 组件化】从模块化到组件化...简介 ---- JavaPoet 的作用是用于生成 Java 源代码 ; JavaPoet 项目 GitHub 地址 : https://github.com/square/javapoet 添加依赖库...: 在 Android Studio 项目中的 Module 下的 build.gradle 添加如下依赖库 , 即可使用 JavaPoet ; compile 'com.squareup:javapoet...:1.13.0' 使用 JavaPoet 生成方法 : 调用 MethodSpec 的如下方法可以完成 Java 函数创建 ; methodBuilder 静态方法 , 创建方法 , 参数是函数名 ,...; import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.TypeSpec; import java.io.IOException
而在此基础上,有一款开源工具javapoet可以更加快捷地生成字节码,实现原理其实也就是对JavaAPT的封装,然而Javapoet有一个局限性,就是只能生成新的.class文件,却无法修改原有的类,这也是它的一大局限性所在...0x00 概述 注解系列 注解基础 JavaPoet 编译期注解处理之APT 上一篇限于篇幅只介绍了APT,这篇来继续介绍javapoet,是square公司的开源库。...正如其名,java诗人,通过注解来生成java源文件,通常要使用javapoet这个库与Filer配合使用。...0x01 简单使用 使用之前要先引入这个库 compile 'com.squareup:javapoet:1.7.0' 复制代码 javapoet是用来生成代码的,需要借助 常用类 使用javapoet...之前有javawriter,但javapoet有着更强大的代码模型,并且对类的理解更加到位,因此推荐使用javapoet 参考文章 juejin.cn/post/684490… cloud.tencent.com
implementation 'com.google.auto.service:auto-service:1.0-rc4' //自动注册注解处理器 implementation 'com.squareup:javapoet...:1.8.0' //javapoet代码生成框架 implementation project(':router-annotation') //依赖注解模块 } sourceCompatibility...addParameter(String[].class, "args") .addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet...final class HelloWorld { public static void main(String[] args) { System.out.println("Hello, JavaPoet...总结 以上就是通过Javapoet和annotation自动生成Java代码的一个基本模式。生成代码的具体细节,本文没有深究。
javapoet —— 用于生成 Java 源代码的 Java API 包。...javapoet 目录只有一个 package-info.java 文件,编译时会打包到该目录下,内容为 square 组织开源的 javapoet。.../** * Spring's repackaging of * JavaPoet * (with ...Spring-specific utilities; for internal use only). */ package org.springframework.javapoet; GraalVM
at com.sun.tools.javac.processing.JavacFiler.createSourceFile(JavacFiler.java:378) at com.squareup.javapoet.JavaFile.writeTo...: package kim.hsl.router_compiler; import com.google.auto.service.AutoService; import com.squareup.javapoet.JavaFile...; import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.TypeSpec; import java.io.IOException...; import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.TypeSpec; import java.io.IOException...String[].class, "args") .addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet
JavaPoet生成代码 JavaPoet是一个可以生成.java源代码的开源项目,也是出自JakeWharton之手,我们可以结合注解处理器在程序编译阶段动态生成我们需要的代码。...先介绍一个使用JavaPoet最基本的例子: ?...其实JavaPoet还提供了很多有用的接口来帮我们更方便的生成代码。更加详细的用法请访问https://github.com/square/javapoet,这里我就不赘述了。...参考文档 [初探JavaPoet] http://blog.ornithopter.me/post/android/javapoet Generating Java Source Files with...JavaPoet http://www.hascode.com/2015/02/generating-java-source-files-with-javapoet/ Java注解处理器 http://
通过阅读 ButterKnife 源码和本文,你将收获: android-apt 三件套: 注解处理器(AbstractProcess) 注解处理器注册(AutoService) 代码生成(JavaPoet...在该方案中,通常有个必备的三件套,分别是注解处理器 Processor,注册注解处理器 AutoService 和代码生成工具 JavaPoet。...三件套之 Java 诗人 最后介绍下三件套中最诗情画意的一个工具—— JavaPoet(https://github.com/square/javapoet)。...了解 JavaPoet ,最好的方式便是看官方文档。...举例如下,假设有如下 ActivIty 经过 JavaPoet 处理后,将生成如下文件: 那么 JavaPoet 是如何处理的?
通过javapoet生成代码 上面生成代码的部分,是通过字符串拼接,过程非常繁琐。接下来就介绍一种更优雅的方式,使用javapoet。...添加依赖: dependencies{ implementation'com.squareup:javapoet:1.10.0' } 在ClassCreatorProxy中添加如下代码 ?...www.jianshu.com/p/94979c056b20 https://blog.csdn.net/wzgiceman/article/details/54580745 https://github.com/square/javapoet
摘要 在annotationProcessor 自动生成代码(上)中,我们介绍了如何通过注解和javapoet生成一个简单的HelloWorld.java。...比如方便我们生成Java代码的——JavaPoet。 提供的东西 Set<?...annotations 获取注解集合 RoundEnvironment 获取被注解的类 ProcessingEnvironment 用于生成代码 JavaPoet 在上一篇中,我们使用JavaPoet来帮助我们生成...JavaPoet为我们提供了方法、类、类注释等标准格式代码的创建方式。下面是一段示例,其中MethodSpec是方法块,TypeSpec是类型块,JavaFile是Java文件。
开发 ) 【Android 组件化】路由组件 ( 路由组件结构 ) 【Android 组件化】路由组件 ( 注解处理器获取被注解的节点 ) 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet...生成代码 ) 在 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet 生成代码 ) 博客中在注解处理器中 , 简单的使用了 JavaPoet 生成了 Java 代码 ; 本篇博客中讲解...: package kim.hsl.router_compiler; import com.google.auto.service.AutoService; import com.squareup.javapoet.JavaFile...; import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.TypeSpec; import java.io.IOException
include: ['*.jar']) compile 'com.google.auto.service:auto-service:1.0-rc2' compile 'com.squareup:javapoet...JavaPoet 这个库的主要作用就是帮助我们通过类调用的形式来生成代码。 依赖上面创建的annotation Module。 定义Processor类 生成代码相关的逻辑就放在这里。...final class HelloWorld { public static void main(String[] args) { System.out.println("Hello, JavaPoet...addParameter(String[].class, "args") .addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet...JavaPoet 也有很多例子可以学习。 Example代码 https://github.com/taoweiji/DemoAPT
mojohaus/aspectj-maven-plugin 以及相应介绍:https://www.mojohaus.org/aspectj-maven-plugin/index.html 方法二:利用APT + JavaPoet...在编译期实现切面逻辑 如果对于APT不了解的小伙伴,可以查看我之前的文章聊聊如何运用JAVA注解处理器(APT) 而JavaPoet是JavaPoet 是生成 .java 源文件的 Java API,...具体查看官方文档 https://github.com/square/javapoet 或者查看此博文 https://weilu.blog.csdn.net/article/details/112429217...不过JavaPoet 只能生产新的代码,无法对原有的代码进行修改。...System.currentTimeMillis() - startTime; System.out.println("costTime : " + costTime + "ms"); } } 注: 因为JavaPoet
: package kim.hsl.router_compiler; import com.google.auto.service.AutoService; import com.squareup.javapoet.ArrayTypeName...; import com.squareup.javapoet.ClassName; import com.squareup.javapoet.JavaFile; import com.squareup.javapoet.MethodSpec...; import com.squareup.javapoet.ParameterSpec; import com.squareup.javapoet.ParameterizedTypeName; import...com.squareup.javapoet.TypeName; import com.squareup.javapoet.TypeSpec; import com.squareup.javapoet.WildcardTypeName
开发 ) 【Android 组件化】路由组件 ( 路由组件结构 ) 【Android 组件化】路由组件 ( 注解处理器获取被注解的节点 ) 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet...生成代码 ) 【Android 组件化】路由组件 ( 注解处理器参数选项设置 ) 【Android 组件化】路由组件 ( 构造路由表中的路由信息 ) 【Android 组件化】路由组件 ( 使用 JavaPoet...注解处理器代码 package kim.hsl.router_compiler; import com.google.auto.service.AutoService; import com.squareup.javapoet.ClassName...; import com.squareup.javapoet.JavaFile; import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.ParameterSpec...; import com.squareup.javapoet.ParameterizedTypeName; import com.squareup.javapoet.TypeSpec; import com.squareup.javapoet.WildcardTypeName
开发 ) 【Android 组件化】路由组件 ( 路由组件结构 ) 【Android 组件化】路由组件 ( 注解处理器获取被注解的节点 ) 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet...生成代码 ) 【Android 组件化】路由组件 ( 注解处理器参数选项设置 ) 【Android 组件化】路由组件 ( 构造路由表中的路由信息 ) 【Android 组件化】路由组件 ( 使用 JavaPoet...注解处理器代码 package kim.hsl.router_compiler; import com.google.auto.service.AutoService; import com.squareup.javapoet.ClassName...; import com.squareup.javapoet.JavaFile; import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.ParameterSpec...; import com.squareup.javapoet.ParameterizedTypeName; import com.squareup.javapoet.TypeSpec; import
mAnnotatedClassMap.values()) { try { //将找到的所有的BindView的信息写进java文件里面去 //需要对JavaPoet...e.getMessage()); } } return true; } 3.总结 理解起来其实不是很困难,主要是有很多细节需要处理,另外还有不常用的库(JavaPoet
领取专属 10元无门槛券
手把手带您无忧上云