java如何实现参数相同但签名不同的方法
我必须实现具有相同功能但返回类型不同的函数,并且函数的参数也是相同的
public static List<Base> remove(List<Subclass> arrange ) {
List<Base>update = new ArrayList<>();
for(Subclass arranging : arrange){
//For-loop body here
}
return update;
}
public static List<Subclass> remove(List<Subclass> arrange ) {
List<Subclass>update = new ArrayList<>();
for(Subclass arranging : arrange){
//For-loop body here
}
return update;
}
这里Base
和Subclass
是已经定义的类
那里应该只有一个名为remove
的方法,因为功能是相同的,所以如果仅仅因为不同的数据类型而实现相同的方法两次,就会出现冗余
# 1 楼答案
这里需要的是泛型方法
可以使用不同类型的参数调用的单个泛型方法声明。您需要的通用函数如下所示:
如果有多个泛型类型,其中一个是另一个泛型类型的子类(例如基类和子类),则声明如下
有关更多信息,请参阅https://www.tutorialspoint.com/java/java_generics.htm
# 2 楼答案
如果有一个方法具有相同的逻辑和不同的参数类型,则可以创建此类方法的通用版本。在您的情况下,这种方法看起来像:
然后,您可以将此方法与任何
T
(Base
或Subclass
)一起使用,该方法将使用列表过程的元素作为参数,并返回适当的类型:希望这有帮助
# 3 楼答案
我看到您的情况是,两个方法做几乎相同的事情,但向调用者呈现的结果不同。如果返回类型的域更大,则使用泛型。
public static E remove(List<E> arrange)
如果返回类型有限,则可以在基类和子类之间建立关系。并使用协方差来处理多种回报类型