3 回答

TA贡献1806条经验 获得超5个赞
如果您的方法具有相同的逻辑但参数类型不同,则可以创建此类方法的通用版本。在您的情况下,这种方法如下所示:
public static <T> List<T> remove(List<T> arrange) {
List<T> update = new ArrayList<>();
for (T arranging : arrange) {
//For-loop body here
}
return update;
}
然后您可以将此方法与任何T(Base或Subclass) 一起使用,该方法将处理列表中的元素作为参数传递并返回适当的类型:
List<Subclass> one = ...;
one = remove(one);
List<Base> two = ...;
two = remove(two);
希望这可以帮助。

TA贡献1842条经验 获得超13个赞
您在这里需要的是泛型方法。
可以使用不同类型的参数调用的单个泛型方法声明。您需要的通用函数如下所示:
public static < E > List<E> remove( List<E> arrange ) {...}
如果有多个泛型类型并且一个是另一个的子类(例如 BaseClass 和 SubClass),声明将如下所示
public static < E, F > List<E> remove( List<F extends E> arrange ) {...}
更多信息,您可以参考https://www.tutorialspoint.com/java/java_generics.htm

TA贡献1946条经验 获得超3个赞
我看到您所处的情况是,两种方法几乎可以做同样的事情,但向调用者呈现的结果却不同。如果返回类型的域较大,则使用泛型。 public static E remove(List<E> arrange)
如果返回类型有限,您可能会在 Base 和 SubClass 之间建立关系。并使用协方差来处理多种返回类型。
添加回答
举报