📄 arraygrowtest.java
字号:
import java.lang.reflect.*;
public class ArrayGrowTest
{
public static void main(String[] args)
{
int[] a={1,2,3};
a=(int[])goodArrayGrow(a);
arrayPrint(a);
String[] b={"Tom","Dick","Harry"};
b=(String[]) goodArrayGrow(b);
arrayPrint(b);
System.out.println("The following call will generate an exception.");
b=(String[]) badArrayGrow(b);
}
static Object[] badArrayGrow(Object[] a)
{
int newLength=a.length*11/10+10;
Object[] newArray=new Object[newLength];
System.arraycopy(a,0,newArray,0,a.length);
return newArray;
}
static Object goodArrayGrow(Object a)
{
Class c1=a.getClass();
if(!c1.isArray()) return null;
Class componentType=c1.getComponentType();
int length=Array.getLength(a);
int newLength=length*11/10+10;
Object newArray=Array.newInstance(componentType,newLength);
System.arraycopy(a,0,newArray,0,length);
return newArray;
}
static void arrayPrint(Object a)
{
Class c1=a.getClass();
if(!c1.isArray()) return;
Class componentType=c1.getComponentType();
int length=Array.getLength(a);
System.out.print(componentType.getName()+"["+length+"]={");
for(int i=0;i<Array.getLength(a);i++)
System.out.print(Array.get(a,i)+" ");
System.out.println("}");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -