首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏小满

    Javapoet源码解析

    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

    1.1K20发布于 2019-09-02
  • 来自专栏木子杂志

    android JavaPoet记录

    WX20200731-155033_PC.png 官网 https://github.com/square/javapoet 使用: 本次使用的是 implementation 'com.squareup :javapoet:1.8.0' Javapoet 主要是配合 APT 工具使用 在编译期间 生成 java 代码.

    93910发布于 2020-08-09
  • 来自专栏吴涛的专栏

    apt 与 JavaPoet 自动生成代码

    JavaPoet是一组用来生成 .java文件的JAVA API。 TypeSpec、ParameterSpec、MethodSpec、CodeBlock、JavaFile都是JavaPoet提供的用于描述一个源文件元素的类。 JavaPoet为每种元素,都提供了相应的Builder类。 JavaPoet提供了一套自定义的字符串格式化规则。 TypeSpec、ParameterSpec、MethodSpec、CodeBlock、JavaFile都是JavaPoet提供的用于描述一个源文件元素的类。 JavaPoet为每种元素,都提供了相应的Builder类。

    4.8K30发布于 2017-10-26
  • 来自专栏韩曙亮的移动开发专栏

    【Android 组件化】路由组件 ( 使用 JavaPoet 生成路由表类 )

    开发 ) 【Android 组件化】路由组件 ( 路由组件结构 ) 【Android 组件化】路由组件 ( 注解处理器获取被注解的节点 ) 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet

    1.1K20编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【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

    81520编辑于 2023-03-29
  • 来自专栏微信公号【Java技术江湖】

    Java中的屠龙之术(二):如何方便快捷地生成.class文件

    而在此基础上,有一款开源工具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

    99250编辑于 2021-12-14
  • 来自专栏移动开发面面观

    annotationProcessor 自动生成代码(上)

    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代码的一个基本模式。生成代码的具体细节,本文没有深究。

    4.5K40发布于 2018-11-19
  • 来自专栏程序猿DD

    Spring Boot 3.0 抢先了解:aot.factories 是个啥?

    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

    1.6K20编辑于 2023-04-04
  • 来自专栏QQ音乐技术团队的专栏

    浅析ButterKnife

    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://

    1K61发布于 2018-01-31
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android 编译时技术报错 ( 注解处理器 process 方法多次调用问题 )

    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

    1.4K20编辑于 2023-03-29
  • 来自专栏编码前线

    Java注解处理器

    通过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

    1.3K10发布于 2018-09-12
  • 来自专栏设计模式

    拆 JakeWharton 系列之 ButterKnife

    通过阅读 ButterKnife 源码和本文,你将收获: android-apt 三件套: 注解处理器(AbstractProcess) 注解处理器注册(AutoService) 代码生成(JavaPoet 在该方案中,通常有个必备的三件套,分别是注解处理器 Processor,注册注解处理器 AutoService 和代码生成工具 JavaPoet。 三件套之 Java 诗人 最后介绍下三件套中最诗情画意的一个工具—— JavaPoet(https://github.com/square/javapoet)。 了解 JavaPoet ,最好的方式便是看官方文档。 举例如下,假设有如下 ActivIty 经过 JavaPoet 处理后,将生成如下文件: 那么 JavaPoet 是如何处理的?

    82930发布于 2020-12-15
  • 来自专栏移动开发面面观

    annotationProcessor 自动生成代码(下)

    摘要 在annotationProcessor 自动生成代码(上)中,我们介绍了如何通过注解和javapoet生成一个简单的HelloWorld.java。 比如方便我们生成Java代码的——JavaPoet。 提供的东西 Set<? annotations 获取注解集合 RoundEnvironment 获取被注解的类 ProcessingEnvironment 用于生成代码 JavaPoet 在上一篇中,我们使用JavaPoet来帮助我们生成 JavaPoet为我们提供了方法、类、类注释等标准格式代码的创建方式。下面是一段示例,其中MethodSpec是方法块,TypeSpec是类型块,JavaFile是Java文件。

    1.7K30发布于 2018-12-19
  • 来自专栏韩曙亮的移动开发专栏

    【Android 组件化】路由组件 ( 注解处理器参数选项设置 )

    开发 ) 【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

    54710编辑于 2023-03-29
  • 来自专栏刘望舒

    Android APT(编译时代码生成)最佳实践

    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

    1.6K50发布于 2018-07-30
  • 来自专栏Linyb极客之路

    聊聊那些年我们实现java AOP几种常见套路

    mojohaus/aspectj-maven-plugin 以及相应介绍:https://www.mojohaus.org/aspectj-maven-plugin/index.html 方法二:利用APT + JavaPoet 在编译期实现切面逻辑 如果对于APT不了解的小伙伴,可以查看我之前的文章聊聊如何运用JAVA注解处理器(APT) 而JavaPoetJavaPoet 是生成 .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

    60840编辑于 2023-05-10
  • 来自专栏韩曙亮的移动开发专栏

    【Android 组件化】路由组件 ( 生成 Root 类记录模块中的路由表 )

    开发 ) 【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

    3.3K10编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 组件化】路由组件 ( 页面跳转参数依赖注入 )

    : 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

    1.3K20编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 组件化】路由组件 ( 组件间共享的服务 )

    开发 ) 【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

    1.5K10编辑于 2023-03-29
  • 来自专栏Android研究院

    组件化专题-APT实战

    implementation 'com.google.auto.service:auto-servic:1.0-rc4' 7 implementation 'com.squareup:javapoet 11targetCompatibility = "1.7" com.google.auto.service:auto-service:1.0-rc4 是注册Processor的 com.squareup:javapoet addParameter(String[].class,"args") 13 .addStatement("$T.out.println($S)",System.class,"Hello JavaPoet final class HelloWord { 2 public static void main(String[] args) { 3 System.out.println("Hello JavaPoet implementation 'com.google.auto.service:auto-service:1.0-rc4' 4 implementation 'com.squareup:javapoet

    1.1K10发布于 2018-09-11
领券