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
posted @ 2020-04-15 22:37  JohnTesla  阅读(5335)  评论(0编辑  收藏  举报