我有一个这样的变量:
People model=Mock()//created by spock' mock
如何通过反射将变量名“model”更改为“model_0”?
答案 0 :(得分:0)
我怀疑有任何方法可以用反思做到这一点。我和@tim_yates在一起。
我不是字节码/编译器专家,但我确实认为变量的名称在编译时会变成符号,所以它们根本不是可变的。以下Java类:
public class Var {
void a() {
int myVar = 1;
myVar += 1;
}
}
编译和反编译(使用jd-gui)后,代码变为:
public class Var
{
void a()
{
int i = 1;
i++;
}
}
变量名称已更改。
在Groovy上,您可以使用AST,它将为您提供对生成的树的全部功能。以下课程:
class Asts {
def wat() {
Integer myVar = 90
}
}
将生成以下AST:
现在您可以编写自己的AST transformation进行更改。但是,对我来说似乎不值得,集合或地图应该足够了。