如何使类本身复制到另一个具有可以用Java执行的不同名称的类?

时间:2014-09-12 18:35:32

标签: java

我想做的是复制编译的类[让我们称之为 ClassA.class ]给定其文件名(在代码中作为字符串) ,进入一个新文件(也被定义为ClassA中的String)[让我们称之为 ClassB.class ],并且能够执行那个新复制的类(带有新文件名)使用“ javac ClassB ”。

这样做的最佳和最简洁的方法是什么?

编辑:解决方案工作....

十六进制 - 编辑从ClassA到ClassB的文件工作! 所以我猜任何会改变二进制代码的东西都会有效,文件名的长度是恒定的(相同)。

1 个答案:

答案 0 :(得分:2)

您可以使用字节码操作库(Javassist,Asm,BCEL)复制一个类。

对于Javassist来说,这将是(没有尝试过):

ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("ClassA");
cc.setName("ClassB");
cc.writeFile("ClassB.class");