Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在运行时替换类中的方法调用_Java_Fitnesse - Fatal编程技术网

Java 在运行时替换类中的方法调用

Java 在运行时替换类中的方法调用,java,fitnesse,Java,Fitnesse,问题 我正在使用fitnesse运行一些自动测试。有一个名为TableTable的类,如果得到增强,它将允许我做一些很酷的事情。我需要做的是更改此类的方法appendInstructions()的功能 因为fitnesse显式地查找TableTable类,所以我不能简单地创建带有所需增强功能的TableTable的子类-我不能让fitnesse查找并使用我的自定义子类 我当前的解决方案 我采用的临时解决方案是借用TableTable的源代码,将其添加到fitnesse的jar中的同一个包下的源代

问题
我正在使用fitnesse运行一些自动测试。有一个名为TableTable的类,如果得到增强,它将允许我做一些很酷的事情。我需要做的是更改此类的方法
appendInstructions()
的功能

因为fitnesse显式地查找TableTable类,所以我不能简单地创建带有所需增强功能的TableTable的子类-我不能让fitnesse查找并使用我的自定义子类

我当前的解决方案
我采用的临时解决方案是借用TableTable的源代码,将其添加到fitnesse的jar中的同一个包下的源代码树中,并更改其代码以满足我的需要。我的代码的类文件在类路径中显示在fitnesse的jar之前,因此我的更改会被拾取

我想做的事

我不想在fitnesse的jar中完全隐藏TableTable类,我只想在运行时重写该类的一个方法。任何代码生成库(如cglib)都能帮助我在运行时重写类并帮助我实现这一点吗?

听起来您应该看看。

根据您需要更改的范围,您可以使用。有一个关于使用Javassist截取/替换方法的教程。

如果您能解释您的增强功能并与社区共享,那就太好了。也许有一种方法可以使你所寻找的产品成为标准产品或附加产品。