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

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

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

    wangflood

    精心維護一個技術blog,為了工作,也是愛好。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      14 Posts :: 19 Stories :: 8 Comments :: 0 Trackbacks
    最近框架里那個method(Object...params)引發了一系列的不兼容反應,包括我的生理反應。。。
    import java.util.ArrayList;
    import java.util.List;

    public class TestList {

        
    public static void main(String[] args) {
            List
    <String> list = new ArrayList<String>();
            list.add(
    "wang");
            list.add(
    "hello");
            list.add(
    "world");
            
    // list不能做為String params的參數
            
    // test(list);
            
    // 不能轉換成功。why ?
            
    //test((String[]) list.toArray());
            String[] arr = list.toArray(new String[list.size()]);
            test(arr);
            
    //源碼代看不太懂,toArray方法里面為什么不自己
            
    //new String[list.size()];難道不是做緩沖的嗎?
            String[] arr2 = list.toArray(new String[1]);//一個長度也成功。這不是耍我嗎?
            test(arr2);
        }

        
    public static void test(String params) {
            
    for (int i = 0; i < params.length; i++) {
                System.out.println(params[i]);
            }
        }
    }
    1.為什么(String[])list.toArray()轉換會出錯。
    2.實踐證明list.toArray(new String[xx])括號里面的是用作緩沖的。當然分配得多速度就會快了。這個影響會有多大了。
       java這個設計再次讓程序參與到性能中,JVM優化邊界在哪?什么時候,我們需要考慮到分配一個和N的內存單元緩沖,在速度上的不同?
       這樣的時候多嗎?如果有,什么時候?

    posted on 2011-03-29 20:43 wangflood 閱讀(4088) 評論(3)  編輯  收藏 所屬分類: java

    Feedback

    # re: List的toArray方法 2011-08-15 18:55 xp
    1.向子類強制轉型出錯了
    public Object[] toArray() {
    int s = size;
    Object[] result = new Object[s];
    System.arraycopy(array, 0, result, 0, s);
    return result;
    }

    toArray返回的是Object[],并不是List<String>。  回復  更多評論
      

    # re: List的toArray方法 2011-08-15 19:02 xp
    2.個人認為是:
    list.toArray(new String[1]);
    目的只是為了把類型傳進去,使得返回的類型是String
    當然String數組夠大時,里面就不用重新new,

    public <T> T[] toArray(T[] contents) {
    int s = size;
    if (contents.length < s) {
    @SuppressWarnings("unchecked") T[] newArray
    = (T[]) Array.newInstance(contents.getClass().getComponentType(), s);
    contents = newArray;
    }
    System.arraycopy(this.array, 0, contents, 0, s);
    if (contents.length > s) {
    contents[s] = null;
    }
    return contents;
    }  回復  更多評論
      

    # re: List的toArray方法 2012-03-19 16:19 Spartan
    list.toArray(new String[1])
    是為了將類型穿進去,使得返回的類型是傳進去的,在這個方法里它做了幾步主要的工作:
    1.判斷穿進去的是否是Object類型,如果是new一個Object數組,如果不是那么使用反射生成一個空的類型為參數類型的數組,這個數組的每個內容都為空。
    2.使用本地化方法拷貝內容給新數組。  回復  更多評論
      

    主站蜘蛛池模板: 亚洲国产精品一区二区第一页免 | 免费夜色污私人影院在线观看| 久久久无码精品亚洲日韩蜜臀浪潮 | 特级毛片全部免费播放| 日本v片免费一区二区三区| 亚洲人成网国产最新在线| 成人女人A级毛片免费软件| 亚洲国产精品久久久久秋霞影院| 日本黄色动图免费在线观看| 亚洲成色999久久网站| 香港a毛片免费观看 | 亚洲乱码无人区卡1卡2卡3| 成全影视免费观看大全二| 亚洲老熟女五十路老熟女bbw| 日韩成人在线免费视频| 精品在线观看免费| 曰皮全部过程视频免费国产30分钟| 亚洲AV无码一区二区三区网址| 免费一级毛片女人图片| 中文字幕无码免费久久9一区9| 久久亚洲一区二区| 日韩视频在线精品视频免费观看| 色噜噜亚洲男人的天堂| 国产一区二区三区在线免费| av片在线观看永久免费| 亚洲永久永久永久永久永久精品| 黄色网址免费观看| 亚洲一区二区三区久久| 高清国语自产拍免费视频国产| 免费激情网站国产高清第一页| 亚洲精品美女久久久久99| 3344免费播放观看视频| 亚洲av乱码中文一区二区三区| 国产亚洲老熟女视频| 24小时在线免费视频| 粉色视频成年免费人15次| 久久精品国产精品亚洲色婷婷| 美女被cao免费看在线看网站| 黄色片网站在线免费观看| 亚洲va无码手机在线电影| 久久久久国色AV免费看图片 |