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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM