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

时间:2015-09-04 08:38:10

标签: java reflection

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

我已经做过的,就是编写一个小程序来获取目标类的Class实例,遍历其公共方法/字段并获取它们的签名(类似于this program)。这将给我一个.java源文件的框架。然后我手动填充这些方法的主体,以便他们使用反射调用真实的方法。这样制作的Java文件由javac和我的用户代码一起编译。这样我就可以使用目标类而无需使用方法/字段getter填充我的代码。

以下是我的问题:

  • 我试图做的是否有特定的术语? (" Java反射包装器代码生成器"可能?)
  • 是否有一个工具可以自动完成我上面手动执行的任务?
  • 如果没有,构建此类工具面临哪些挑战?

1 个答案:

答案 0 :(得分:1)

您尝试做的是代理类。很多框架使用它来注入一些自动化,事务等...例如Java EE,Spring。

有两种方式: 一个简单的java.lang.reflect.Proxy,但它有一个约束:你的类必须实现一个接口,并且只能调用Interface中的方法。

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

如果您需要,我可以通过示例完成我的答案。