1. 程式人生 > >Java泛型列表陣列

Java泛型列表陣列

我們平時建立陣列,例如:

int[] is=newint[SZ];  //SZ為已定義的常量

但是如果想要一個擁有java列表(如ArrayList)的陣列,且要表明列表的泛型型別時,照樣:

ArrayList<Integer>[] my=new ArrayList<Integer>[SZ];  //1)

但這是就出現了Cannot create a generic array of ArrayList<Integer>的錯誤,如果再改成:

ArrayList<Integer>[] my=new ArrayList[SZ];  //2)

又會出現“Type safety: The expression of type ArrayList[] needs unchecked conversion to conform to
 ArrayList<Integer>[] ”的錯誤,令人很困惑。

但是又想,如果用第二種方法定義的話,“my“還是不能直接用,要先對每一個數組成員進行初始化後才能用,

所以出現以下:

ArrayList<Integer>[] my=new ArrayList[SZ];
for(int j=0;j<my.length;j++)
    my[j]
=new ArrayList<Integer>();

這時就可以對數組裡的每一個列表進行泛型規定,保證了強型別檢查。(其實不用管前面那個警告了)

相關推薦

Java列表陣列

我們平時建立陣列,例如: int[] is=newint[SZ];  //SZ為已定義的常量 但是如果想要一個擁有java列表(如ArrayList)的陣列,且要表明列表的泛型型別時,照樣: ArrayList<Integer>[] my=new Ar

java-陣列以及列舉

列舉: java不允許用=為列舉常量賦值,列舉中的構造方法必須為private修飾 列舉中values方法將列舉型別的成員以陣列的形式返回 toString方法能夠返回列舉常量名 ordinal方法返回enumeration宣告中列舉常量的位置 列舉是一個類,可以有自己的屬性和方法並且實現

java 詳解(普通、 萬用字元、 介面,陣列方法,巢狀)

JDK1.5 令我們期待很久,可是當他釋出的時候卻更換版本號為5.0。這說明Java已經有大幅度的變化。本文將講解JDK5.0支援的新功能-----Java的泛型. 1、Java泛型  其實Java

Java--應用--介面、方法、陣列巢狀

1、泛型介面 1.1泛型介面的基本概念 1.2泛型介面實現的兩種方式 定義子類:在子類的定義上也宣告泛型型別 interface Info<T>{ // 在介面上定義泛型 pub

java建立陣列的總結

在java中,不能通過直接通過T[] tarr=new T[10]的方式來建立陣列,最簡單的方式便是通過Array.newInstance(Class<t>type,int size)的方式來建立陣列例如下面的程式 [java] view plaincop

C#列表List實現二維陣列的功能(令附C#列表List基本用法總結)

          // 搜尋有很多種方式,可以使用IndexOf LastIndexOf FindIndex FindLasIndex Find FindLas ,如果只是檢視元素存不,可以使用Exists()方法          // IndexOf() 方法 需要將一個物件做引數, 如果打到,就返回本

Java 陣列 不支援

Java 不支援泛型陣列。也就是說, List<String>[] ls = new ArrayList<String>[10];   是不支援的,而 List<String>[] ls = new ArrayList

從位元組碼角度分析java陣列的問題

關於java的泛型陣列這個問題,之前就有遇到過,不過當時以為是自己程式碼語法錯誤的問題,現在系統地對java的基礎知識進行深入總結,才發現這個問題某種程度是和泛型的型別擦除機制有關,其實我覺得這個解釋有它的道路但是還是比較勉強。下面我們從位元組碼角度試圖去分析一下java某

Java擦除

類型信息 png ive over tool 創建 edit sid 註意點 Java泛型擦除: 什麽是泛型擦除? 首先了解一下什麽是泛型?我個人的理解:因為集合中能夠存儲隨意類型的對象。可是集合中最先存儲的對象類型一旦確定後,就不能在存儲其它類型的

Java

object java 信息 1、泛型的由來  我們先看下面這段代碼:1234567891011121314 List list = new ArrayList();list.add(24); //向集合中添加一個 Integer 類型的數據list.add("Tom");

Java,通配符和C#對照

size list ack ace arr 類型通配符 語法 ++ net c#的泛型沒有類型通配符,原因是.net的泛型是CLR支持的泛型,而Java的JVM並不支持泛型,僅僅是語法糖,在編譯器編譯的時候都轉換成object類型 類型通配符在java中表示的是泛型

Java詳解

對象數組 整形 泛型方法 tty 接受 一個 div -m color 泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。 假定我們有這樣一個需求:寫一個排序方法,能夠對整形數組、字符串數組甚至其他任何類型的數組進行排序,該如何實現? 答案是可以使用 Ja

JAVA(轉)

強制 off 實例 emp 思想 void 成了 意義 依然 一. 泛型概念的提出(為什麽需要泛型)? 首先,我們看下下面這段簡短的代碼: 1 public class GenericTest { 2 3 public static void

java

car .net arm man blog rman html http archive http://www.cnblogs.com/lwbqqyumidi/p/3837629.html http://blog.csdn.net/sunxianghuang/article

Java與集合筆記

第二章 情況 參數 編譯器 類型擦除 多個參數 一個 each ava 第一章 Java的泛型為了兼容性和防止代碼爆炸,在編譯成字節碼時會進行類型擦除,編譯器自動添加代碼做類型轉換(用到List<Integer>的地方用Integer來做轉換),自動做裝箱拆箱,

Java VS C# (偽 VS 真

功能 方法表 語法 一個 class msil 虛方法 strong 反射 一、泛型的本質 泛型是參數化類型的應用,操作的數據類型不限定於特定類型,可以根據實際需要設置不同的數據類型,以實現代碼復用。 二、Java泛型 Java 泛型是Java1.5新增的特性,JVM並

java中<?>和<T>區別

類型 父類 定義 ext 方法 oid tor 接收 通配符 public static void printColl(ArrayList<?> al){ Iterator<?> it = al.iterator();

第10篇-JAVA 集合框架-JAVA

java集合框架 java泛型 第10篇-JAVA 集合框架-JAVA 泛型每篇一句 :所有的不甘,都是因為還心存夢想初學心得: 不是每件事都註定會成功,但是每件事都值得一試(筆者:JEEP/711)[JAVA筆記 | 時間:2017-04-15| JAVA 集合框架/JAVA 泛型 ]1.JAVA

深入--java的繼承和實現、擦除

部分 end father 沒有 接口 子類 set int nal 泛型實現類: package generic; /** * 泛型父類:子類為“富二代”:子類的泛型要比父類多 * 1,保留父類的泛型-->子類為泛型類

java---通配符,嵌套

sys ram apple port sco java泛型 stat app 繼承鏈 package generic; import java.util.ArrayList; import java.util.List; /** * ? -->通