我有许多类的集合,需要将它们重构为新的类。我将Java与Eclipse或Netbeans结合使用。当前,我使用委托List 创建新的类FooList,然后关注代码无法编译的所有地方。有没有一种方法可以做到而又不破坏代码(最好是一次操作)?

编辑我有以下类型的构造:

public static List<Foo> Bar.createFooList(String s)


并且List<Foo>在其他地方经常使用,这作为业务对象FooList是有意义的。我通过以下方式手动完成此操作:

public class FooList {
    private List<Foo> fooList;
    public FooList(String s) {
        createList(s);
    }
    private void createList(String s) {//...}
    public int size() {return fooList.size();}
}


FooList也将具有List以外的方法。例如现在:

Bar.normalize(List<Foo> fooList);


然后将成为

fooList.normalize();


在另一个函数需要List方法的地方,我使用Eclipse中的Source | Generate Delegate Methods选项在FooList中生成这些方法(与上面的size()一样)。

我可以看到实现List 的吸引力@JonSkeet,但是看不到如何自动更改所有代码。

最佳答案

我只是在IntelliJ中进行了尝试,却没有发现任何可以直接重构的东西。但这可以做到:


像这样创建您的FooList:

公共抽象类BarList实现List {}
进行全局搜索,并将“ List<Foo>”替换为您的“ FooList”。
现在您可以参加比赛了。


现在,您可以使用可用的重构,例如(IntelliJ的“用工厂方法替换构造函数”等)。

那样有用吗?

09-26 15:36