如何使用不同类型的列表重载方法?

时间:2018-07-09 04:55:58

标签: java overloading type-erasure

是否可以重载参数为不同类型的List<>的方法?

例如,我正在寻找创建两个这样定义的方法:

public void getChanges(List<TypeOne>){}
public void getChanges(List<TypeTwo>){}

但是,由于两种方法都接受List,所以存在冲突。有什么方法可以使方法在列表中的内部中考虑对象类型?

我觉得奇怪的是,编译器没有意识到签名确实是不同的,因为List<TypeOne>List<TypeTwo>不同。

1 个答案:

答案 0 :(得分:4)

您必须给它们使用不同的名称,因为上述方法具有相同的删除

有关具体泛型类型的信息不会存储在运行时中,因此,如果您将签名保持在上面,那么如果将任何对象列表作为参数传递,JVM将无法实现在运行时应调用哪种方法。

有关删除的更多信息,请参阅https://docs.oracle.com/javase/tutorial/java/generics/erasure.html