如果方法参数名称不存在,如何将方法参数名称添加到方法中?
有一些关于如何检索这些名称的示例(如果存在),使用如下方法:
CtMethod m;
CodeAttribute codeAttribute = m.getMethodInfo().getCodeAttribute();
if (codeAttribute != null) {
LocalVariableAttribute table = (LocalVariableAttribute) codeAttribute.getAttribute(LocalVariableAttribute.tag);
if (table != null)
for (int i = 0; i < table.tableLength(); i++)
m.getMethodInfo().getConstPool().getUtf8Info(table.nameIndex(i));
}
这将给出方法的所有参数名称(如果存在)。
我该如何反过来?
答案 0 :(得分:0)
Javassist不允许删除方法或字段,但它允许 改名称。因此,如果不再需要某种方法,它应该 通过调用setName()和重命名并更改为私有方法 在CtMethod中声明的setModifiers()。
Javassist不允许添加 现有方法的额外参数。而不是做 这是一个接收额外参数以及另一个参数的新方法 参数应该添加到同一个类中。例如,如果你想要 向方法添加额外的int参数newZ:
在Point类中,您应该将以下方法添加到Point类中:
void move(int newX, int newY) { x = newX; y = newY; }
void move(int newX,int newY,int newZ){
// do what you want with newZ. move(newX, newY);
}
有关详细信息,请查看此https://jboss-javassist.github.io/javassist/tutorial/tutorial2.html