Eclipse JDT Refactor方法以编程方式在子类中失败

时间:2015-06-12 09:29:45

标签: java refactoring eclipse-jdt automated-refactoring

我正在使用org.eclipse.jdt.core.IMethod并在界面上调用method.rename(newName, true, new NullProgressMonitor());

它重构了接口方法,但无法重构其实现类 - 方法。

例如:

interface Animal {
    void eat(); // refactors here
}

class Dog implements Animal {

    // fails to refactor this
    void eat() {
    }
}

请帮忙!

2 个答案:

答案 0 :(得分:0)

看起来是正确的。

代码应该查找此方法的实现(通过Java Search Engine API),并相应地将重写方法重命名为同一重构的一部分。

答案 1 :(得分:0)

谢谢Gosu!

但这对我有用!

RenameMethodProcessor processor = new RenameVirtualMethodProcessor(method);
        processor.setNewElementName(newName);
        processor.setUpdateReferences(true);

        RenameRefactoring refactoring = new RenameRefactoring(processor);


        refactoring.checkAllConditions(new NullProgressMonitor());
        Change res = refactoring.createChange(new NullProgressMonitor());

        res.perform(new NullProgressMonitor());