posts - 262,  comments - 221,  trackbacks - 0
          【1】Array簡介
          Java反射技術除了可以在運行時動態地決定要創建什么類型的對象,訪問哪些成員變量,方法,還可以動態地創建各種不同類型,不同維度的數組。
           
          動態創建數組的步驟如下:
            1.創建Class對象,通過forName(String)方法指定數組元素的類型
            2.調用Array.newInstance(Class, length_of_array)動態創建數組
           
          訪問動態數組元素的方法和通常有所不同,它的格式如下所示,注意該方法返回的是一個Object對象
            Array.get(arrayObject, index)
            
          為動態數組元素賦值的方法也和通常的不同,它的格式如下所示, 注意最后的一個參數必須是Object類型
            Array.set(arrayObject, index, object)

          動態數組Array不單可以創建一維數組,還可以創建多維數組。步驟如下:
            1.定義一個整形數組:例如int[] dims= new int{5, 10, 15};指定一個三維數組
            2.調用Array.newInstance(Class, dims);創建指定維數的數組
           
          訪問多維動態數組的方法和訪問一維數組的方式沒有什么大的不同,只不過要分多次來獲取,每次取出的都是一個Object,直至最后一次,賦值也一樣。
           
          動態數組Array可以轉化為普通的數組,例如:
            Array arry = Array.newInstance(Integer.TYPE,5);
            int arrayCast[] = (int[])array;

          【2】示例代碼
          A. 一維數組:
          public static void main(String args[]) throws Exception {
                  Class
          <?> classType = Class.forName("java.lang.String");
                  
          // 創建一個長度為10的字符串數組
                  Object array = Array.newInstance(classType, 10);
                  
          // 把索引位置為5的元素設為"hello"
                  Array.set(array, 5"hello");
                  
          // 獲得索引位置為5的元素的值
                  String s = (String) Array.get(array, 5);
                  System.out.println(s);
              }

          B. 多維數組:
          public static void main(String args[]) {
                  
          int[] dims = new int[] { 51015 };
                  
          // 創建一個具有指定的組件類型和維度的新數組。
                  Object array = Array.newInstance(Integer.TYPE, dims);
                  

                  
          // 取出三維數組的第3行,為一個數組
                  Object arrayObj = Array.get(array, 3);
                  Class
          <?> cls = arrayObj.getClass().getComponentType();
                  System.out.println(cls);

                  
          // 取出第3行的第5列,為一個數組
                  arrayObj = Array.get(arrayObj, 5);
                  
          // 訪問第3行第5列的第10個元素,為其賦值37
                  Array.setInt(arrayObj, 1037);
                  
                  
          // 動態數組和普通數組的轉換:強行轉換成對等的數組
                  int arrayCast[][][] = (int[][][]) array;
                  System.out.println(arrayCast[3][5][10]);
              }


          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2008-09-04 15:13 Paul Lin 閱讀(1144) 評論(0)  編輯  收藏 所屬分類: J2SE
          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 缙云县| 定远县| 长春市| 鹤岗市| 新泰市| 五常市| 嵊州市| 洛扎县| 衡水市| 东兰县| 六安市| 双柏县| 鹤庆县| 城固县| 玛多县| 阜康市| 通道| 轮台县| 东辽县| 尉犁县| 陕西省| 华宁县| 高平市| 嘉禾县| 团风县| 天台县| 陕西省| 安福县| 温宿县| 上犹县| 扎囊县| 衢州市| 和田县| 邹平县| 怀集县| 山东| 睢宁县| 荣成市| 钟山县| 营山县| 九龙县|