如果List<Object>
包含List<Integer>
比它更完美但是java如何允许List<Integer>
包含测试List<Object>
而不抛出任何编译时错误。
测试用例 1
Object obj = "one";
List<Object> objs = Arrays.<Object>asList("one", 2, 3.14, 4);
List<Integer> ints = Arrays.asList(2, 4);
assert objs.contains(obj); //Statement 1
assert objs.containsAll(ints); //Statement 2
assert !ints.contains(obj); //Statement 3
assert !ints.containsAll(objs); //Statement 4
在上述案例语句 3 和 4 中编译并运行成功。所以我的疑问是:
- 由于应该存在编译时错误,如何运行语句 3 和 4?
- 提供这种相互矛盾的支持是一个错误还是有某种原因?