Java泛型(2)常见使用错误
- 问题1:赋值类型错误 Incompatible types.Found: 'java.util.List<java.lang.String>',required: 'java.util.List<java.lang.Object>'
List<Object> objectList1=new ArrayList<>();
List<String> stringList1=new ArrayList<>();
objectList1=stringList1;
//Incompatible types.Found: 'java.util.List<java.lang.String>',required: 'java.util.List<java.lang.Object>'
因为objectList1需要的是Object类型,但是却给了一个String类型的stringList1
如果加入通配符?,改成下面代码就可以了
List<? extends Object> objectList2=new ArrayList<>();
List<String> stringList2=new ArrayList<>();
objectList2=stringList2;
- 问题2:警告(不过没有报错):Unchecked call to 'add(E)' as a member of raw type 'java.util.List'
List list1=new LinkedList();//警告(因为没有加泛型类型)
// List<String> list1=new LinkedList();
list1.add(1);
list1.add("a");
另外发现:如果不指定泛型,可以在List中保存多种类型的元素。因为默认为Object类型
- 问题3:警告:Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.String>'
List<String> rawList = new ArrayList();//警告(没有加尖括号):
- 问题4:可以给Array加泛型吗?不可以
Array<Integer>;//Type Array does not have type parameters