posts - 48,comments - 156,trackbacks - 0
          請各位老大看下面兩段代碼

          C#代碼:

          public class A<T> {

             
          private T[] arr;
             
             
          public A(int capacity){
                  arr
          = new T[capacity];
                  Console.WriteLine(
          "End");
              }
          }



          Java代碼:

          public class A<T> {

             
          private T[] arr;
             
             
          public A(int capacity){
                  arr
          = new T[capacity];
                  System.
          out.println("End");
              }

          }


          C# 代碼很輕松就通過編譯了,而Java的代碼,eclipse卻提示我說“不能創建 T 的范型數組”。控制臺編譯顯示如下信息:
          generic array creation
            arr = new T[capacity]; 
                    ^
          1 error


          這到底是怎么回事呀,難道是我什么地方搞錯了,還是 Java 真的不支持范型數組,請各位老大指教!

          本來想學習數據結構的, 由于C# 和 java 都支持范型,猶豫了幾天還是決定用 java ,沒想到準備寫一個最簡單的靜態表,就被困在這里了,在網上竟然也搜不到相關的說明,在好幾個論壇求助都沒得到回答,真是郁悶呀
          posted on 2005-08-08 16:32 左洸 閱讀(7160) 評論(17)  編輯  收藏

          FeedBack:
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2005-08-08 17:00 | ivanwan
          你的eclipse是現在還不支持范型的.你只能用控制臺來編譯.  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2005-08-08 17:20 | 左光
          我的eclipse是3.1的,應該沒問題的,即使這樣的我還是按照您說的在控制臺下編譯了一把,還是不行呀!

          提示如下:

          generic array creation

          arr = new T[capacity];
          ^

          1 error

          這怎么回事呀  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2005-08-08 17:22 | 左光
          ^ 應該在 new 的下面  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2005-08-08 17:47 | 左光
          本來想學習數據結構的, C# 和 java 都支持范型,猶豫了幾天還是決定用 java ,沒想到準備寫了一個最簡單的靜態表,就被困在這里了,在網上竟然也搜不到相關的說明,真是郁悶呀  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2005-08-08 18:17 | zeno
          java下要這么用
          public class A<T> {

          private T[] arr;

          public A(int capacity){
          arr = (T[])new Object[capacity];
          System.out.println("End");
          }
          }  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2005-08-08 18:42 | 左光
          上面這位大蝦,按你的方法還真的通過了編譯,但是總感覺別別扭扭的!雖然通過了,編譯器還是給出了一個提示,大體意思是“使用了未檢查的或者不安全的操作”。

          另外,我的理解使用范型就是為了避免轉型,提高性能,結果這個地方為了使用范型竟然還得轉型,總覺得讓人難以理解,是不是還有更好的解決辦法?  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2005-08-08 18:55 | Dennis
          沒錯, 它是不支持的

          比較安全而有效的做法是, 在 Class 以外建立 array
          就像是 List.toArray 的做法一樣  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2005-08-08 19:14 | zeno
          java的范型是編譯器來完成的。
          就說不會因為你用了范型而加快運行速度。
          array是不支持范型的,如果不愿意用array,可以用ArrayList
          如果沒辦法的話,可以參照上面的做法。
          上面的做法是我從jdk source里抄的。  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2005-08-09 09:40 | 大胃
          我的隨筆也許能解答樓主的疑惑:

          http://www.aygfsteel.com/sean/archive/2005/08/09/9630.html  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2006-09-20 12:50 | 新手
          java的范型是像C++的模板那樣,依賴源代碼的?那可以發行范型.class組件嗎?
          說是范型,里面其實都是存儲的Object,然后依賴運行時類型檢查?

          感覺還是C#的范型徹底一點,為了不改JVM而犧牲功能感覺不劃算,估計這是永遠的遺憾了。  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2007-05-24 18:51 | broad-axe
          1. 要全面支持jdk5,應使用eclipse 3.2

          2. jdk5 中不支持“創建范型數組”,但是可以聲明,或在方法中返回  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2007-08-14 17:03 | 婁建成
          不是不支持數組,而是范型是一種,特殊的類型,不能用new來實例化,這點和其他類型不同。即便你不用 arr = new T[capacity] 不把arr聲明為數組,只是聲明為T arr;在你用arr實例化對象時候也會出錯 如:arr = new T();
          一樣會報錯。
            回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2008-02-06 13:13 | ForzaMilanGong
          ....
          問題是Java是純動態鏈接
          定義T[] t = new T[]時,編譯器無法確定具體的T是否有0參的構造器  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2009-01-25 11:37 | 單飛
          T[] newItems = (T[]) Array.newInstance(items.getClass().getComponentType(), items.length - 1);

          http://www.aygfsteel.com/sdyjmc/archive/2008/09/23/230762.html  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯!
          2009-01-28 22:08 | 卡卡卡卡卡卡卡卡卡卡
          @ivanwan

          Java 不支持泛型數組!  回復  更多評論
            
          # re: java 范型竟然不支持數組?有沒有搞錯![未登錄]
          2009-03-10 02:10 | James
          Arrays是不支援的(請用ArrayList or Other...)

          import java.util.ArrayList;

          public class A<T> {

          private ArrayList<T>[] arr;
          public A(int i){
          arr = new ArrayList[i];
          for(int j=0;j<arr.length;j++){
          arr[j] = new ArrayList<T>();
          }
          System.out.println("End");
          }
          }

          要轉型的原因是因為<T> (任何類型)
          所以不要轉型請【明白指定何種類型】

          class B<Image>{
          /**
          * ArrayList<Image>[]
          * 是表示ArrayList[]中,放置的內容物一定是Image Type
          */
          private ArrayList<Image>[] arr;
          public B(int i){
          /**
          * 因此 arr = new ArrayList<Image>[i];
          * Error...沒必要也不需要 (多此一舉) !
          */
          arr = new ArrayList[i];

          for(int j=0;i<arr.length;j++){
          /**
          * 直接在此指明(初紿化時)
          */
          arr[j] = new ArrayList<Image>();
          }
          System.out.println("End");
          }
          }  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 盐池县| 三门县| 乌鲁木齐县| 胶州市| 环江| 芜湖市| 巴林右旗| 山东省| 金山区| 黄浦区| 颍上县| 福清市| 浑源县| 庆阳市| 博罗县| 南康市| 宁夏| 隆林| 临湘市| 玉屏| 镇赉县| 靖西县| 阿荣旗| 方正县| 云阳县| 温泉县| 宝坻区| 溧阳市| 郸城县| 桂林市| 什邡市| 道孚县| 保靖县| 丹寨县| 临桂县| 新干县| 特克斯县| 成安县| 台江县| 桐城市| 阿荣旗|