为什么第一种会出现编译错误而第二种不会?如果不写类型的话默认不也是object类吗
ArrayList< Object>arrayList= new ArrayList<String>(); //报错是因为前面生名了数据类型Object,后面又指定为String,不符合要求,
因为泛型要求的是 前面的类型要用后面的来判断数据类型例如 下面这个
ArrayList<? extends Object>arrayList= new ArrayList<String>();
这个表示 此集合的数据类型是Object或者其子类都可以.
要么你就一开始就不指定,
ArrayList arrayList= new ArrayList<String>();
如果你希望第一个可用那泛型的定义应该是 T extends Obest ,第二个应该属于自动推断但是类型擦除了