利用反射实现通用扩展数组长度的方法
public void extendArrayLength_1(int[] a,int length) {
if (length<=a.length) {
System.out.println("输入的长度不符合要求");
} else {
int[] b=java.util.Arrays.copyOf(a,length);
System.out.println("原数组的长度为:" + a.length);
System.out.println("扩展后数组的长度为:" + b.length);
}
}
public void extendArrayLength_2(int[] a) {
int[] b=new int[a.length*2];
System.arraycopy(a,0,b,0,a.length);
System.out.println("原数组的长度为:" + a.length);
System.out.println("扩展后数组的长度为:" + b.length);
}
Class c=Class.forName("Person");
Constructor cs=c.getConstructor();
Object obj=cs.newInstance();
System.out.println("第一种方法:");
Method m1=c.getDeclaredMethod("extendArrayLength_1", int[].class,int.class);
int a[]= {1,2,3,4,5};
System.out.println("输入扩展后的数组长度:");
Scanner scan=new Scanner(System.in);
int b=scan.nextInt();
m1.invoke(obj,a,b);
System.out.println("第二种方法:");
Method m2=c.getDeclaredMethod("extendArrayLength_2", int[].class);
m2.invoke(obj,a);