如何重构泛型方法返回到接口及其所有实现

时间:2015-02-01 00:18:32

标签: java eclipse generics refactoring

我会更改在接口中声明的返回类型,这在其他10个类方法中实现。 我使用eclipse作为IDE, 当前方法的签名是:

public List<T> findById(int id);

以及我需要的东西

public T findById(int id);

问候,圣地亚哥

1 个答案:

答案 0 :(得分:0)

由于注释中的@ Andy Turner状态,您无法自动重构返回列表以返回其中一个列表元素。但是,有一些步骤可以安全地进行界面重构。

  1. 重命名界面中的列表返回方法。

  2. 对于最常见的解决方案,例如,返回第一个元素,使用TDD在您的一个实现中编写新的对象返回方法。新方法应调用旧方法,并返回新的返回类型。不要使用下面的示例,它显然是不安全的,并且会在某个时刻导致堆栈转储。

    @Override
    public T findById(int id){
        List<T> res = findById(id);
        return res.get(1);
     }
    
  3. 更新界面以包含新方法签名。

  4. 对于已使用相同解决方案的每个类,请复制并粘贴步骤2中编写的新方法。

  5. 对于任何其他所需的实现,请重复步骤2和4.

  6. 如果方法是基类的抽象方法,则步骤2中的初始方法将写在基类上。