在下面的代码中,我收到一条错误消息,指出集合无法转换为List。为什么不?我想当方法saveObject被称为部分
List e = c;
等于
List e = ArrayList();
因为c - 尽管类型为Collection - 最后指的是ArrayList
代码:
import java.util.*;
class Test {
int i;
Object prevObject;
public void saveObject(List e) {
prevObject = e;
i++;
}
public static void main (String[] args) {
Test t = new Test();
Collection c = new ArrayList();
t.saveObject(c);
}
}
答案 0 :(得分:2)
参数绑定发生在编译时,而不是运行时。您正尝试将Collection
(可能是实现Collection
的任何内容)传递给期望List
子类的方法。有Collection
个类没有实现List
,因此编译器无法保证在运行时可以进行强制转换。