如何将泛型方法的 return 重构为接口及其所有实现

How to refactor the return of a generic method to an interface and all its implementations

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

public List<T> findById(int id);

以及我需要的

public T findById(int id);

此致,圣地亚哥

正如@Andy Turner 在评论中指出的那样,您无法自动重构 return 列表以 return 列表元素之一。但是,需要采取一些步骤来安全地进行界面重构。

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

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

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

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

  5. 对于任何其他所需的实施重复步骤 2 和 4。

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