Java Generics:在arraylist(无界通配符类型)上,add和addAll方法的行为有所不同
直接在这里举个例子:
ArrayList x = new ArrayList(); ArrayList y = new ArrayList(); x.add("abc"); // Clause 1. Compilation error - No problemo. Understood. x.addAll(y); // Clause 2. No compilation error
对于无界通配符,无法添加。 为什么最后一个语句没有编译错误?
因为您正在使用原始类型调用该方法。 编译器无法执行类型检查。 如果您使用addAll(..)
用户generics,则addAll(..)
将失败。