- 實例說明
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)); } }