我需要搜索方法的出现次数,更改名称,保留方法体,为方法添加注释,并确保导入注释。我需要在项目范围内的多个类中执行此操作。
这些文档对我来说没有意义,任何人都可以了解这个功能以及如何使用IntelliJ的结构查找和替换功能完成以下任务?
import a;
import b;
import c;
public class SomeClass extends SomeAbstractClass implements SomeInterface {
@Override
public void someMethod() {
methodbody.getMoreBody();
}
}
转换为
import a;
import b;
import c;
import some.package.with.annotation;
public class SomeClass extends SomeAbstractClass implements SomeInterface {
@Override
@annotation
public void newMethodName() {
methodbody.getMoreBody();
}
}
答案 0 :(得分:0)
目前的问题是我们希望将行为应用于具有特定名称的所有方法,这些名称存在于某个类中。重命名方法的字符串替换操作很简单。使用intelliJ进行结构替换可能是可能的(我真的不知道),但完全可以使用切入点来避免。
@Pointcut(
"execution(public * someMethod(..))")
private void someMethod() {}
@Pointcut("target(com.company.SomeAbstractClass+)")
private void someAbstractClass() {}
@Before("someMethod && someAbstractClass()")
public void somePointCutAction(Pointcut pointcut) {
// Some logic to execute before the method that is a
// child of SomeAbstractClass and has a method name someMethod
}
答案 1 :(得分:0)
由于您只需要一对一替换(无需搜索模式),因此您不需要进行结构搜索。
您可以执行以下操作。
要查找的文字:@Override[\S\s]*public void someMethod
替换为:@Override\n @annotation\n public void someMethod
点击查找&然后适用于所有事件。
这将会发现&为你替换部分。
但是,这不会将您的注释导入.java文件。如果您的导入是明确的导入,则可以通过设置 - > 类型 auto import
即时导入 - > Java - >将勾号设为 add unambiguous imports on fly.
否则您必须为每个文件手动导入它们。希望这会有所帮助:))