我必须实现功能相同但返回类型不同的函数,并且函数的参数也相同。
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
的方法,因为功能是相同的,所以如果仅仅因为不同的数据类型而实现相同的方法两次,就会出现冗余
3条答案
按热度按时间nwwlzxa71#
如果你有一个方法,它有相同的逻辑,不同的参数类型,你可以创建一个泛型版本的方法。在你的情况下,这样的方法看起来像:
然后,你可以将这个方法用于任何
T
(Base
或Subclass
),这个方法将处理作为参数传递的列表元素,并返回相应的类型:lvjbypge2#
这里需要的是泛型方法。
可以用不同类型的参数调用的单个泛型方法声明。所需的泛型函数如下所示:
如果有多个泛型类型,并且其中一个是另一个的子类(例如BaseClass和SubClass),则声明如下所示
有关详细信息,请参阅https://www.tutorialspoint.com/java/java_generics.htm
2q5ifsrm3#
我发现你正处于这样一种情况:两个方法做几乎相同的事情,但是向调用者呈现不同的结果。如果返回类型的域较大,请使用泛型。
public static E remove(List<E> arrange)
如果返回类型是有限的,你可以在基类和子类之间建立一种关系,并使用协方差来处理多个返回类型。