我需要在java方法中替换方法调用。
考虑一个场景:
public void enterCatle(){
if(PaltformRuntime.returnSuggestion()){
System.out.println("entered into the castle");
}
}
我需要用其他方法调用替换returnSuggestion()
。我可以通过覆盖edit(MethodCall m)
来实现此目的。
Expression editor of java assist
。
但有一种情况如下。
public void enterCatle(){
if(PaltformRuntime.returnSuggestion() && ElementRegistry.returnSuggestion()){
System.out.println("entered into the castle");
}
}
在if语句的enterCatle()
里面,有来自不同类的2 returnSuggestion()
。我需要的是单独替换第一个returnSuggestion()
。
我尝试通过m.getLineNumber()
m.where().getName()
之类的条件来确定要替换的确切方法调用,我可以将这些内容缩小到特定方法和精确行号。现在的问题是,如果在同一行中使用两次相同的方法,则两者都会被替换。
如何确定要更换的确切方法?有没有办法获取方法调用的上下文,如方法调用的位置,以便我可以通过java辅助映射。 或者这种情况还有其他方法吗?