当前位置: 首页 > 知识库问答 >
问题:

Java反射包装器代码生成器?

郑嘉悦
2023-03-14

我想使用一个只在我的运行时环境中可用的类,我没有它的任何. java或. class文件。使用它的唯一方法AFAIK是通过反思。

我已经做的是编写一个小程序来获取我的目标类的Class实例,迭代它的公共方法/字段并获得它们的签名(类似于这个程序)。这将给我一个. java源文件的框架。然后我手动填充这些方法的主体,以便它们使用反射调用真正的方法。所谓的Java文件是javac编译的,还有我的用户代码。这样,我就可以使用目标类,而不用用方法/字段获取器填充代码。

以下是我的问题:

  • 我想做的事有没有一个明确的定义?(“可能是Java反射包装器代码生成器”)
  • 有没有一个工具可以自动完成我上面手动完成的任务
  • 如果没有,构建这样一个工具的挑战是什么

共有1个答案

董砚
2023-03-14

您尝试做的是一个代理类。很多框架使用它来注入一些自动化、事务等。。。比如javaee、Spring。

有两种方法:简单的一种,java.lang.reflect.代理,但它有一个限制:你的类必须实现一个接口,只有接口中的方法可以被调用。

更复杂的一个依赖于字节码生成,你可以使用Mockito框架来生成你需要的所有东西:它用于测试,但也可以用来生成任何类型的类,覆盖现有的类。

如果你需要的话,我可以用例子来完成我的答案。

 类似资料:
  • Jboot 内置了一个简易的代码生成器,可以用来生成model层和Service层的基础代码,在生成代码之前,请先配置jboot.properties关于数据库相关的配置信息,Jboot 代码生成器会通过该配置去链接数据库。 jboot.datasource.type=mysql jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/jbootdemo

  • 遵照此规范,在实际操作中,有许多重复。接下来推荐一款专为本规范量身定做的代码生成器 Laravel 5.x Scaffold Generator。 本扩展支持 5.1 ~ 5.5 版本的 Laravel。 只需要一个命令: 即可生成: $ php artisan make:scaffold Projects --schema="name:string:index,description:text:

  • 问题内容: 我需要以下工具: 方便地解析Java源代码并轻松访问给定的元素。 轻松生成源代码文件,轻松将数据结构转换为代码 有什么好的技巧,库,框架,工具吗?谢谢你的帮助。 问题答案: 从Java 6开始,编译器在JDK中包含一个API。通过它,您可以通过API 访问Java解析器的结果。JDK5以Mirror API 的形式提供了相同的功能。有一个很好的介绍性文章在这里。 我见过的最好的代码生成

  • Sergen 有一些额外的配置选项,你可以通过解决方案目录下的配置文件(Serenity.CodeGenerator.config)设置。 这是所有的配置选项: public class GeneratorConfig { public List<Connection> Connections { get; set; } public string KDiff3Path { get

  • 我使用jOOQ程序代码生成数据库,但现在我遇到了一些问题。在数据库中,我有表A和表B。第一次都生成了pojo、dao、接口等。经过一段时间的开发,我发现表A需要添加一些字段或修改一些字段,所以我不得不再次编码,然后jOOQ代码生成器将覆盖现有的代码,这让我很难过。当我在排除表的情况下使用“排除A”时,发现只生成了表A的数据,表B将被删除。我不知道如何处理这个问题。我的代码生成器如下:

  • 根据数据库表生成对应的增,删,改,查功能,和 js 验证功能! 目前支持的是oracle 数据库,写自行修改 项目本身可以做为PHP新手的入门程序!