我看书上写的一个可以扩充数组容量的程序,不过为什么运行时出现问题呢?
程序如下:
import java.lang.Class;
import java.lang.reflect.*;
public class ArrayGrow {
static Object arraygrow(Object[] a){
Class cl=a.getClass();
if(!cl.isArray())return null;
Class componentType=a.getClass().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);
}
public static void main(String[] args){
int[] a={1,2,3,4};
a=(int[])arraygrow(a);|||||||||||||||
for(int i=0;i <a.length;i++)
System.out.println( "a[ "+i+ "] "+ "= "+a[i]);
}
}
在打|||||||||||||||的地方出错
提示出错:
The method arraygrow(Object[]) in the type ArrayGrow is not applicable for the
arguments (int[])
谢谢高手们指教
------解决方案--------------------
public static void main(String[] args) {
Integer[] a = new Integer[]{ 1, 2, 3, 4 };
Integer[] b = (Integer[])arraygrow(a);
for (int i = 0; i < b.length; i++)
System.out.println( "a[ " + i + "] " + "= " + a[i]);
}
int是基本数据类型,要用包装类。
但我没看你程序,不知道具体你要干什么。