关于java泛型的一些问题

img

img

为什么第一种会出现编译错误而第二种不会?如果不写类型的话默认不也是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 ,第二个应该属于自动推断但是类型擦除了