下面是示例代码,这让我很困惑如果在泛型的情况下java方法重载是如何工作的。
问题是:为什么我需要使用不同的返回类型,以防我使用泛型参数重载方法?
我知道擦除删除了<T>
而我所拥有的只是List,对于编译器来说它是不明确的,但是不同的返回类型有助于决定调用哪个方法?
public static void main(String args[]) throws Exception {
PracticeGenerics p = new PracticeGenerics();
p.test();
}
private void test() throws Exception {
//print(null); //The method print(List<String>) is ambiguous for the type PracticeGenerics
print(new LinkedList<String>());
print(new LinkedList<Integer>());
}
public String print(List<String> list){
System.out.println("print string");
return null;
}
public Object print(List<Integer> list){
System.out.println("print Integer");
return null;
}
我机器上的Java版本:
java版“1.6.0_31”
Java(TM)SE运行时环境(版本1.6.0_31-b05)
Java HotSpot(TM)64位服务器VM(内置20.6-b01,混合模式)
答案 0 :(得分:2)
简单地说,重载意味着有两个或更多方法具有相同的名称,但具有不同的签名。
方法的签名由方法名称和参数组成。当重载方法时,显然名称将是相同的,这意味着重载方法仅与它们具有的参数列表不同。
return-type与方法重载无关!