【发布时间】:2018-07-09 04:55:57
【问题描述】:
是否可以重载参数为不同类型的List<>的方法?
例如,我希望创建两个这样定义的方法:
public void getChanges(List<TypeOne>){}
public void getChanges(List<TypeTwo>){}
但是,由于两种方法都接受List,因此存在冲突。有没有办法让方法考虑到列表中的对象类型 within?
编译器没有意识到签名确实不同,这对我来说似乎很奇怪,因为 List<TypeOne> 与 List<TypeTwo> 不同。
【问题讨论】:
-
简短的回答,两者都被视为
List<Object>,因此这里不可能出现过载。 -
你可以这样做
public void getChanges(List<TypeOne>){}和public void getChanges(List<TypeTwo>, int a){}其中int a是一些无用的价值。 -
@nimi0112 - 感谢您的解决方法,但这绝对是一个非常糟糕的习惯......
-
@Zephyr - 这可能是个坏习惯,但它不会弄乱代码,也不需要其他变量分配,而且它的使用可以在 cmets 中轻松解释。
-
@nimi0112 除了引入无用的参数外,“不会弄乱代码”,让未来的代码读者想知道它到底意味着什么。重命名方法是非常可取的。
标签: java overloading type-erasure