創建長度可變的數組


  • 實例說明

  Java中對於數組的支持並不強大。程序員必須時刻注意數組中元素的個數,否則會出現數組下表越界異常。因此才在API中定義了ArrayList幫助開發,但這意味着需要學習新的方法。本實例將使用反射機制實現一個工具方法,沒放調用該方法時數組的長度就會增加5.

  • 關鍵技術

  Array類提供了動態創建和訪問Java數組的方法。Array允許在執行get或set操作期間進行擴展轉換,但如果發生伸縮轉換,則拋出異常IllegalArgumentException。為了創建新的數組對象,需要使用newInstance()方法,它可以根據指定的元素類型和長度創建新的數組。改方法聲明如下:

public static Object newInstance(Class<?> conponentType,int length) throws NegativeArraySizeException;

參數說明:componentType 表示新數組的組件類型的class 類型

length:新數組的長度

  • 設計過程
public class UsefulArray {
    public static Object inscreaseArray(Object array){
        Class<?> clazz = array.getClass();//獲得代表數組的Class對象
        if(clazz.isArray()){//如果輸入的是一個數組
            Class<?> componentType = clazz.getComponentType();//獲取數組元素的類型
            int length = Array.getLength(array);//獲取數組的長度
            Object newArr = Array.newInstance(componentType,length + 5);//新建數組
            System.arraycopy(array,0,newArr,0,length);//復制原來數組中的所有元素
            return newArr;
        }
        return null;
    }
    public static void main(String[] args) {
        int[] intArr = new int[10];
        System.out.println("原數組長度為:" + intArr.length);
        Arrays.fill(intArr,8);//將原數組全部賦值為8
        System.out.println("數組內容為:" + Arrays.toString(intArr));
        int[] newIntArr = (int[]) inscreaseArray(intArr);
        System.out.println("第一次進行數組伸縮,之后的數組長度:" + newIntArr.length);
        System.out.println("伸縮后數組內容" + Arrays.toString(newIntArr));
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM