举个例子: List<String> list1 = new ArrayList<>(); List<Object> list2 = new ArrayList<>(); list1 = list2; 这个代码会报错。 原因是:list1和list2并不是子父类关系。 具体原因:list2其实是将自己的地址值给了list1。如果接下来list1.add(123),这对于list1是成立的;但是list2也同样会加入123,显然和泛型声明的的String矛盾。