如何在java字节码中修改局部变量的类型

时间:2012-05-11 02:05:15

标签: variables types local javassist

我正在使用Javassist重写字节码。我需要修改一些局部变量的类型来对象。如何使用Javassist访问局部变量并更改其类型?

感谢。

1 个答案:

答案 0 :(得分:0)

这个问题已经很老了,但是由于我做了类似的事情,我会发布我的解决方案:

由于我没有找到任何改变Javassist中某个类字段类型的解决方案,我只是删除了旧方法,并添加了一个新名称但名称相同的新方法:

CtClass point = ClassPool.getDefault().get("Point");
CtField toBeDeleted = point .getField("fieldName");
point .removeField(toBeDeleted);
CtField newField = CtField.make("public int fieldName = 0;", point);
point.addField(newField );

因此,在这个示例中,我在类fieldName中取了point字段,其类型为Object,并且知道已在类型为'int'的字段中更改并初始化为0