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