Eclipse是否有工具将类型层次结构合并到单个类中?

unR*_*unR 5 java eclipse

日食是否有一个工具,可以创建MergedAB

public class A {
    int a;

    public int getA(){
        return A;
    }
}
Run Code Online (Sandbox Code Playgroud)

public class B extends A {
    int b;

    public int getB(){
        return b;
    }
}
Run Code Online (Sandbox Code Playgroud)

public class Merged {
    int a;
    int b;

    public int getA(){
        return A;
    }
    public int getB(){
        return b;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*zyk 6

我不这么认为.这不是那么简单的任务.你的例子很简单,但考虑一下:

class A {
    private int a;
    public void foo(){
        System.out.println(a);
    }
}

class AA extends A {
    private int a; //its not the same 'a'!!
    public void foo(){ //ok, we override, so we can 'overwrite', but...
        super.foo(); //... what with this?
        System.out.println(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,它很难实现自动化.如果这个层次结构中的某个类扩展了一些lib类,那么你没有源代码呢​​?因此,合并很难,而且非常糟糕,这就是为什么我认为没有人写过这样的工具.

  • **重构 - >上推/下推**在类型层次结构中上下移动字段和方法.它还会更新出现的情况.但正如Adam Jurczyk所说,它很可能会导致一些错误.特别是当类型相互引用或具有缩进字段/方法时(equals(),hashCode(),serialVersionUID) (5认同)