<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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 左洸 閱讀(7169) 評論(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://m.tkk7.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://m.tkk7.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");
    }
    }  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 免费无码AV片在线观看软件| 在线亚洲精品自拍| 国产大片51精品免费观看| 在线播放亚洲第一字幕| 色老头综合免费视频| 18禁免费无码无遮挡不卡网站| 国产一级一片免费播放| 亚洲精品国产情侣av在线| 国产亚洲视频在线播放大全| 无码av免费网站| 亚洲区小说区图片区| 亚洲国产综合精品中文第一| 成人无码WWW免费视频| 国产免费69成人精品视频| 色多多免费视频观看区一区| 国产免费不卡v片在线观看| 亚洲AV无码一区东京热久久 | 最近2019中文字幕免费直播| 亚洲男人av香蕉爽爽爽爽| 国产精品福利在线观看免费不卡| 日韩精品免费电影| 亚洲高清有码中文字| 日本免费的一级v一片| 草久免费在线观看网站| 久久久久久久综合日本亚洲| 一个人看的免费视频www在线高清动漫 | 女bbbbxxxx另类亚洲| 一个人看www在线高清免费看 | 色噜噜亚洲精品中文字幕| 精品四虎免费观看国产高清午夜| 免费一级毛片在播放视频| 亚洲精品理论电影在线观看| 免费精品国产自产拍在线观看图片| 亚洲免费在线播放| 日韩免费在线观看视频| 国产成人亚洲综合无码精品| 国产在线jyzzjyzz免费麻豆| 四虎精品成人免费视频| 亚洲日韩区在线电影| 国产成人免费一区二区三区| 免费视频精品一区二区三区 |