java - Eclipse JDT : How do I auto-move dependencies of a statement as well, 同时移动语句

标签 java eclipse refactoring abstract-syntax-tree eclipse-jdt

我有以下功能-

void called(PassedObj obP){
    A obA = new A(pOb);
    B obB = new B(obA);
    obB.randomFunc();
    ...
}

void caller(){
    PassedObj obP= new PassedObj();
    called(obP);
}

使用Eclipse JDT,是否可以自动找出obB的所有依赖项并将它们自动移动到调用者函数?

我想重构这些函数,使其看起来像 -

void called(B obB){
    obB.randomFunc();
    ...
}

void caller(){
    PassedObj obP= new PassedObj();
    A obA = new A(obP);
    B obB = new B(obA);
    called(objB);
}

一般来说,是否可以将一条语句移动到另一个函数,以便该语句的所有依赖项也被移动(复制)到新位置?

最佳答案

不,但好消息是,您可以使用 JDT 实现您想要的目标,尽管与您所要求的不同。

这里您应该提取方法叫(B):

void called(PassedObj obP){
    A obA = new A(pOb);
    B obB = new B(obA);
    called(obB);
}

void called(B obB){
    obB.randomFunc();
    ...
}

void caller(){
    PassedObj obP= new PassedObj();
    called(obP);
}

然后内联方法叫(PassedObj):

void called(B obB){
    obB.randomFunc();
    ...
}

void caller(){
    PassedObj obP= new PassedObj();
    A obA = new A(pOb);
    B obB = new B(obA);
    called(obB);
}

关于java - Eclipse JDT : How do I auto-move dependencies of a statement as well, 同时移动语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40785294/

相关文章:

java - 正则表达式在 csv 字符串中查找值

java - 如何使用eclipse生成多个包的可执行jar文件

eclipse - 创建新文件时,如何在Eclipse CDT中更改默认的C++文件扩展名?

c++ - C++中类常量在哪里定义?

java - 我不明白为什么当我学习 ServletContextListener 时会发生 ClassNotFoundException

java - 尝试交换可观察列表中的元素时出现异常?

java - 同时添加到 ArrayList 的并发线程 - 会发生什么?

java - Java 中具有多个程序的单个应用程序

visual-studio - 如何使用 ReSharper 重新格式化命名样式?

swift - "Extensions must not contain stored properties"阻止我重构代码