更新時間:2020-02-24 13:45:13 來源:動力節點 瀏覽2446次
我們可以使用Class類中的isArray()方法來檢查類是否是數組。
我們可以創建一個數組,使用反射通過讀取和修改其元素的值java.lang.reflect.Array類。
Array類的getLength()方法獲取數組的長度。
Array類中的所有方法都是靜態的。
要創建數組,請使用Array類中的重載靜態方法newInstance()。
ObjectnewInstance(Class<?>componentType,intarrayLength)
ObjectnewInstance(Class<?>componentType,int...dimensions)
第一個方法根據指定的組件類型和數組長度創建一個數組。
第二個版本創建指定組件類型和尺寸的數組。
newInstance()方法的返回類型是Object,我們需要將它轉換為實際的數組類型。
下面的代碼創建一個長度為5的int數組。
int[]ids=(int[])Array.newInstance(int.class,5);
要創建一個維度為5乘3的int數組。
int[][]matrix=(int[][])Array.newInstance(int.class,5,3);
例子
以下代碼顯示了如何動態創建數組并操作其元素。
importjava.lang.reflect.Array;
publicclassMain{
publicstaticvoidmain(String[]args){
try{
Objectmy=Array.newInstance(int.class,2);
intn1=Array.getInt(my,0);
intn2=Array.getInt(my,1);
System.out.println("n1="+n1+",n2="+n2);
Array.set(my,0,11);
Array.set(my,1,12);
n1=Array.getInt(my,0);
n2=Array.getInt(my,1);
System.out.println("n1="+n1+",n2="+n2);
}catch(NegativeArraySizeException|IllegalArgumentException
|ArrayIndexOutOfBoundsExceptione){
System.out.println(e.getMessage());
}
}
}
上面的代碼生成以下結果。
Java數組反射
獲取數組的維度
Java支持array數組。
類中的getComponentType()方法返回數組的元素類型的Class對象。
以下代碼說明了如何獲取數組的維度。
publicclassMain{
publicstaticvoidmain(String[]args){
int[][][]intArray=newint[1][2][3];
System.out.println("int[][][]dimensionis"+getArrayDimension(intArray));
}
publicstaticintgetArrayDimension(Objectarray){
intdimension=0;
Classc=array.getClass();
if(!c.isArray()){
thrownewIllegalArgumentException("Objectisnotanarray");
}
while(c.isArray()){
dimension++;
c=c.getComponentType();
}
returndimension;
}
}
上面的代碼生成以下結果。
Java數組反射
展開數組
Java數組是一個固定長度的數據結構。
要放大數組,我們可以創建一個更大尺寸的數組,并將舊數組元素復制到新數組元素。
以下代碼顯示如何使用反射展開數組。
importjava.lang.reflect.Array;
importjava.util.Arrays;
publicclassMain{
publicstaticvoidmain(String[]args){
int[]ids=newint[2];
System.out.println(ids.length);
System.out.println(Arrays.toString(ids));
ids=(int[])expandBy(ids,2);
ids[2]=3;
System.out.println(ids.length);
System.out.println(Arrays.toString(ids));
}
publicstaticObjectexpandBy(ObjectoldArray,intincrement){
ObjectnewArray=null;
intoldLength=Array.getLength(oldArray);
intnewLength=oldLength+increment;
Class<?>c=oldArray.getClass();
newArray=Array.newInstance(c.getComponentType(),newLength);
System.arraycopy(oldArray,0,newArray,0,oldLength);
returnnewArray;
}
}
上面的代碼生成以下結果。
以上就是動力節點Java培訓機構小編介紹的“Java基礎教程:Java動態數組”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習