【发布时间】:2011-02-26 03:06:29
【问题描述】:
我今天遇到了这种奇怪的(在我看来)行为。学习这个简单的测试类:
public class Test {
public static void main(String[] args) {
Test t = new Test();
t.run();
}
private void run() {
List<Object> list = new ArrayList<Object>();
list.add(new Object());
list.add(new Object());
method(list);
}
public void method(Object o) {
System.out.println("Object");
}
public void method(List<Object> o) {
System.out.println("List of Objects");
}
}
它的行为符合您的预期,打印“对象列表”。但是如果你改变以下三行:
List<String> list = new ArrayList<String>();
list.add("");
list.add("");
你会得到“对象”。
我尝试了其他几种方法并得到了相同的结果。这是一个错误还是正常行为?如果是正常的,谁能解释一下原因?
谢谢。
【问题讨论】:
标签: java