【发布时间】:2010-08-10 19:53:54
【问题描述】:
我有以下使用泛型重载方法的测试类。它在使用 javac 编译时可以工作,但在 Eclipse Helios 中编译失败。我的java版本是1.6.0_21。
我阅读的所有文章都表明 Eclipse 是正确的,这段代码应该不起作用。但是,当使用 javac 编译并运行时,选择了正确的方法。
这怎么可能?
谢谢!
import java.util.ArrayList;
public class Test {
public static void main (String [] args) {
Test t = new Test();
ArrayList<String> ss = new ArrayList<String>();
ss.add("hello");
ss.add("world");
ArrayList<Integer> is = new ArrayList<Integer>();
is.add(1);
is.add(2);
System.out.println(t.getFirst(ss));
System.out.println(t.getFirst(is));
}
public String getFirst (ArrayList<String> ss) {
return ss.get(0);
}
public Integer getFirst (ArrayList<Integer> ss) {
return ss.get(0);
}
}
【问题讨论】:
-
如果这是一个实际用例,我只推荐一种方法
public <A> A getFirst (ArrayList<A> ss) { return ss.get(0); }...如果它只是为了说明目的而设计的,请继续 -
eclipse中的编译错误是什么?
-
在伽利略中运行良好,应该如此。
-
@meriton:错误是:方法 getFirst(ArrayList
) 与 Test 类型中的另一个方法具有相同的擦除 getFirst(ArrayList )
标签: java eclipse generics javac