首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

放弃 KotlinPoet 基于模版引擎生成 Dependency 的 Gradle Plugin

veMarsExt 里的 deps 通过 Map 的委托,获取到 key 对应的 value(第 7 行),即坐标依赖 思考 虽然理清了怎么在 build.gradle.kts 下使用 mars-gradle-plugin...key 的生成规则是啥,看起来似乎是将 artifactId 的 - 转为 _ (实际上还真是),**比如 artifactId 为 lib-android 生成的 deps 里对应的 key 应该为...的 kotlin 目录下生成 Dependency.kt 用 kotlinPoet 进行元编程之前,我期望生成的 Dependency.kt 能满足以下条件: Dependency 是一个单例 Dependency...其实就是有一天,突然翻到森哥的一篇是时候放弃 JavaPoet/KotlinPoet 了 ,内心 OS:你让我放弃就放弃啊,我不管,KotlinPoet 天下第一......动态生成 Dependency.kt 接下来,就是如何实现插件的问题了,思路大致如下: find kotlinSourceSet dir 找到 buildSrc KotlinSourceSet 所在的文件目录

88540
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何获取一个类的所有对象实例

    如何在运行时获取一个Java类的所有对象实例呢?...这个类可能是任何一个类,既不是单例,也不一定是由Spring管理,也不提供静态方法,有的时候还不能修改其代码,这里给大家介绍一种底层实现的方式,基于jvmti,代码用C++实现。...); } jvmti->Deallocate((unsigned char*)instances); return result;}再用gcc/g++编译得到链接库二进制文件,mac生成的...dylib,linux生成的是.so,windows生成的是.dll, 然后就可以加载动态链接库文件,调用native函数了public class InstancesOfClass { static...,生成的对象和通过类获取所有的对象进行对比测试例子如下:class A{}class B{}public class TestInstancesOfClass { private static <

    27620

    工具类如何获取到 Spring 容器中的 Bean?

    当然这只是一个理论,在实际开发中,我们往往要用到 Spring 容器为我们提供的诸多资源,例如想要获取到容器中的配置、获取到容器中的 Bean 等等。...在这种情况下,就需要 Spring 容器中的 Bean 真正的意识到 Spring 容器的存在,才能要到这些东西,那么如何让一个 Bean 意识到 Spring 容器的存在呢?...EnvironmentAware:实现该接口的对象可以获取到一个 Environment 对象,通过 Environment 可以获取到容器的环境信息。...在 @Import 作为元注解使用时,通过 @Import 导入的配置类如果实现了 ImportAware 接口就可以获取到导入该配置类接口的数据配置。...,并非一个容器,所以要通过这个工具类获取相应的 Bean,如下: public class AsyncManager {     /**      * 操作延迟10毫秒      */     private

    1.3K10

    获取request,获取response,获取session,获取ServletRequestAttributes,的工具类

    目录 1 需求 2 工具类 1 需求 我们写一个springboot项目,写一个接口,接口没有参数,但是我们想要 获取获取request,获取response,获取session,获取ServletRequestAttributes...,将字符串渲染到客户端,判断接口是否是Ajax异步请求,内容编码,解码 我们可以使用工具类,拿到随便一个项目都可以使用 2 工具类 import java.io.IOException; import...* 就是在其他的页面,你接口参数里面没有 request ,reponse * 你可以使用这个工具类,获取到 * @author ruoyi */ public class ServletUtils...防止乱码,客户端进行编码,服务器端进行解码 **/ /** * 内容编码 * * @param str 内容 * @return 编码后的内容...return StringUtils.EMPTY; } } /** * 内容解码 * @param str 内容 * @return 解码后的内容

    2.1K10

    生成的迁移类

    EFCore 2.1出来有一段时间了,里面的新功能还没怎么用,今天研究下如何使用EF Core 2.1添加种子数据。...然后看看会发生什么 生成的迁移类 命令:Add-Migration Xxx 看一下生成的迁移类的内容: 生成的SQL脚本 命令:Script-Migration 这是里面关于插入数据的部分:  迁移到数据库...看下生成的迁移文件: 先删除了之前添加的Id为2的种子数据,然后把插入了一笔Id为3的数据。 看下SQL: 也是先Delete,再Insert。 数据库里: 种子数据为什么要指定主键的值?  ...Model的主键是private set的; 这时我们就无法在HasData里设置主键/外键的值了,那么如何来添加种子数据呢?...答案就是使用匿名类。 我把City Model里的外键去掉(导航属性仍然保留,和Province的主从关系依然存在): 然后就可以这样添加种子数据: 迁移后的数据: 结果仍然如预期一样。

    1.1K10

    【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )

    定制视图绑定 ( 启用视图绑定后 不想生成绑定类 ) V . 视图绑定布局文件 VI . 绑定类名称生成规则 VII . 绑定类对应的布局中的组件字段生成规则 VIII . 视图绑定类获取 IX ....绑定类对应的布局中的组件字段生成规则 ---- 1 ....生成的绑定类字段 : 只要在布局文件中定义了 id 属性的组件 , 绑定类中就会为该组件生成相应的字段 ; ① 绑定类字段对应布局 ID : activity_main.xml 布局文件中 , 第一个和第二个...视图绑定类获取 ---- activity_main.xml 布局生成的绑定类为 ActivityMainBinding , 可调用 inflate 方法 , 获取该绑定类对象 , 需要传递 LayoutInflater...获取视图绑定类组件 ---- 可以直接通过 视图绑定类 ActivityMainBinding 对象 binding 获取对应的组件 , 组件名称就是布局文件中定义的组件 id ; //binding

    1.2K10

    Android--利用APT+kotlinpoet实现组件化开发Router机制

    ,我们最后通过kotlinpoet生成的类也是参考该实现类: class RouterPathTest : IRouterPath { override fun cacheInRouterMetaByPath...kotlinpoet代码生成时需要用到:类的包名和类名、方法名、生成的文件名(也是类名)、生成的类的包路径等 object Const { const val ACTIVITY = "android.app.Activity..." } 4.使用注解解释器及kotlinpoet 每个使用了插件的业务module都会执行一次注解解释器的方法,我们对注解的处理主要分为两步: 使用APT获取Router注解的类,并进行包装,最后存入一个...group-RouterMeta列表的Map中 对group-RouterMeta列表的Map进行处理,首先遍历RouterMeta列表,使用kotlinpoet生成IRouterPath的实现类,再根据...,接下来实现真正的跳转功能,编译期的代码已经生成了,运行时我们需要获取到它,加载类并利用反射实例化 1.获取生成类的工具类 /** * 获取所有生成的代码全路径 * Created by aruba

    95620

    【说站】java动态如何生成代理类

    java动态如何生成代理类 说明 1、调用Proxy类的newProxyInstance方法来获取代理类实例。 2、这个代理类实现了指定的接口并且会把方法调用分发到指定的调用处理器。...:代理类实现的接口列表 h:调用处理器,也就是我们上面定义的实现了InvocationHandler接口的类实例 实例 public class Main {     public static void...        //加上这句将会产生一个$Proxy0.class文件,这个文件即为动态生成的代理类文件         System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles...","true");           //获取代理类实例sell         Sell sell = (Sell)(Proxy.newProxyInstance(Sell.class.getClassLoader...);         sell.ad();     } } 以上就是java动态生成代理类的方法,希望对大家有所帮助。

    64720

    使用注解自动生成代码

    _8) 需要在子类中实现 process() 方法,在这里可以通过获取代码中标注了某个注解的所有类,然后处理自定义的逻辑 注册注解处理器,在注解工程的 META-INF/services 路径下新增文件...生成代码 JavaPoet 和 KotlinPoet 是一个生成 Java/Kotlin 代码的库 在上面的例子中,我们需要扫描出所有标注了 @CarAnnotation 注解的类,然后自动生成一个...CarFactory 类 1.首先找到所有标注了注解的代码 // 获取所有标注了 @Car 的类 val cardList = roundEnvironment.getElementsAnnotatedWith...brand to carClazz // 准换成一个 Map } 2.然后根据上面获取到的信息拼凑成代码 // 根据 Map 生成 "brand" -> return Car() 的代码 val...,如果这个参数刚好是 Class 类型的,在 process() 方法中尝试获取换个 Class 对象的时候会发生错误,这是因为 Annotation Processor 在执行的时候这个类可能还没有参与编译

    97000

    「类与对象」如何准确获取对象的内存大小?

    回顾一下对象的本质 在上篇文章「类与对象」揭秘本质的第一步中,揭秘NSObject类的底层数据结构,如下所示: struct NSObject_IMPL { Class isa; }; 在Xcode...的Debug状态中,对比一下结构体类型和类之间的区别,具体代码如下: int main(int argc, const char * argv[]) { @autoreleasepool {...class_getInstanceSize 首先,这是一个runtime提供的API,用于获取类实例对象所占用的内存大小,返回所占用的字节数。...理解一点即可,这个函数是获取系统实际分配的内存大小。 sizeOf 这个函数大家应该很熟悉,确切的讲,这不是一个函数,就是一个操作符,它的作用对象是数据类型,主要作用于编译时。...应用 学习了上面获取内存大小的工具后,下面这道面试题就能很好的回答了。 一个NSObject对象占用多少内存?

    4.6K10

    【Android】只给个泛型,如何自动初始化ViewModel与ViewBinding?这几种方案值得了解

    那...可如何是好呐。...其实我们想要在基类完成泛型的实例化,我们目前是有两种思路,一种是反射获取到泛型的实例,一种是通过编译器代码生成完成对象的实例创建,其中又分为APT代码生成和ASM字节码插桩两个小分支。...我们添加 auto-service 和 kotlinpoet 代码生成器的依赖 implementation 'com.squareup:kotlinpoet:1.4.0' compileOnly...这样,当你的项目构建时,编译器会自动调用APT并生成相应的代码。 kotlinpoet 是一个用于生成 Kotlin 代码的库,由 Square 公司开发。...,需要注意的是我同样需要混淆生成的代码 #自定义的自动注入生成类,保护实现 -keep class **.

    36710
    领券