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

Java 如何重构泛型方法对接口及其所有实现的返回,java,eclipse,generics,refactoring,Java,Eclipse,Generics,Refactoring,我将更改接口中声明的返回类型,该类型在其他10个about类方法中实现。 我使用eclipse作为IDE, 当前方法的签名为: public List<T> findById(int id); Santiago在评论中指出,您不能自动将返回列表重构为返回列表元素之一。但是,需要采取一些步骤来安全地进行接口重构 重命名接口中的列表返回方法 对于最常见的解决方案,例如返回第一个元素,使用TDD在一个实现中编写新的对象返回方法。新方法应该调用旧方法,并返回新的返回类型。不要使用下面的例子

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

public List<T> findById(int id);
Santiago在评论中指出,您不能自动将返回列表重构为返回列表元素之一。但是,需要采取一些步骤来安全地进行接口重构

重命名接口中的列表返回方法

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

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

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

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


如果方法是基类上的抽象方法,那么步骤2中的初始方法将在基类上编写。

我认为eclipse不支持这种自动重构,因为您可能需要在实现的方法体中进行一些更改,以便它返回单个元素而不是列表。考虑到只有10个实现,手动修改会更快吗?在这种情况下,手动修改会更容易,但应该有一种自动方式。因为如果我们想到一个大型系统,并且一个方法开发人员签名错误,那么手动更改它会很麻烦更改签名相当简单,但是没有单一的方法来实现从返回列表到返回单个元素的更改-是否返回第一个元素、最后一个元素、最小值、最大值、平均值,其他一些元素的组合。。。可能性是无限的。您可以花时间尝试使用eclipse的框架实现重构,但有时简单和重复会让您更快。@Andy反过来,另一种可能是在新公司声明相同的方法,但也不知道如何在实现interfaceThanks的类中覆盖。看待
@Override
public T findById(int id){
    List<T> res = findById(id);
    return res.get(1);
 }