这是我的程序:
public class Basket {
private Item[] shops = { new Item("1",1)} ;
public void storeItems(Item it){
if (arraysIndex > shops.length){
resizeArray(shops);
}
*shops[arraysIndex++] = {it};
*shops[arraysIndex++] = {new Item(it.getName(),it.getPrice())};
}
public <T> T[] resizeArray(T[] arrayToResize){
int newCapacity = arrayToResize.length *2;
T[] newArray = (T[]) Array.newInstance(arrayToResize[0].getClass(), newCapacity);
System.arraycopy(arrayToResize, 0, newArray, 0, arrayToResize.length);
return newArray;
}
}
在我用*表示的行中我会得到这样的错误:
“数组常量只能在初始值设定项中使用”
我不知道如何解决java中的问题请告诉我。
问候
答案 0 :(得分:4)
简直丢掉花括号:
shops[arraysIndex++] = it;
shops[arraysIndex++] = new Item(it.getName(),it.getPrice());
此外,这里有一个错误:
if (arraysIndex > shops.length){
resizeArray(shops);
}
由于Java中的数组索引从零开始,因此正确的比较是if (arraysIndex >= shops.length)
。
此外,如果您使用的是Java 1.6+,resizeArray()
可以基于Arrays.copyOf()
。
最后,你似乎做了ArrayList<T>
所做的事情 - 为什么不简单地使用后者而不担心重新分配等?