【发布时间】:2019-05-21 15:17:16
【问题描述】:
我必须实现功能相同但返回类型不同的函数,并且函数的参数也相同。
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,因为功能相同,所以如果我因为不同的数据类型而两次实现相同的方法,就会出现冗余
【问题讨论】:
-
如果唯一的区别是返回类型,您可以使用泛型的一种方法。
-
如果他们有相同的名字是不可能的。当您调用 remove(List) 时,编译器如何知道要执行哪一个?返回 List
或 List ? 的那个 -
Java 不支持基于返回类型的方法重载。如果要避免冗余,请重命名该方法并从另一个调用。 link
-
您可以创建一个通用方法调用 remove(List
arrange) 并从两个类中调用它。
标签: java algorithm generics design-patterns collections