为什么这段代码不起作用?如何设置Object[]
的长度。
Object[] entry = new Object[]{};
entry[0] = 1;
entry[1] = "1";
答案 0 :(得分:5)
您必须初始化数组的大小。要么是这样的:
Object[] entry = new Object[2];
entry[0] = 1;
entry[1] = "1";
或者这样做:
Object[] entry = new Object[] {1, "1"};
干杯, 最大
答案 1 :(得分:5)
如果您正在初始化一个新数组,那么您必须使用上面答案中提到的语法明确指定其大小:
Object[] entry = new Object[2];
或使用数组初始化程序块阻止您在问题中提出的内容,如下所示:
Object[] entry = new Object[] {"a", "b"};
你在这里做的是将数组初始化为空,从而将其大小设置为0.如果打印出该数组的长度,它将为0。
如果您想要一个可以修改其大小的数组,建议您使用List接口(例如ArrayList)。
List<Object> myList = new ArrayList<Object>();
您可以使用其构造函数设置ArrayList的初始容量:
List<Object> myList = new ArrayList<Object>(2);
列表是通用的,所以你应该使用type参数,否则会收到一些警告。
如果您不知道列表中存储的对象,可以执行以下操作:
List<?> myList = new ArrayList(2);
但你会收到警告。
有关数组的更多信息:Arrays
关于列表:List interface
如果您对java Generics感兴趣:Generics
答案 2 :(得分:3)
指定大小如下:
Object[] entry = new Object[2];
您可能需要阅读本教程:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
答案 3 :(得分:3)
你需要确定这样的大小:
Object[] entry = new Object[2];
在你的例子中:
Object[] entry = new Object[]{};
您正在创建一个长度为0的数组,因此entry[0]
和entry[1]
不存在。
答案 4 :(得分:3)
无法调整Java数组的大小。
使用new Object[2]
,
或者您使用其中一个集合类,例如ArrayList
:
ArrayList<Object> l = new ArrayList<Object>();
l.add(1);
l.add("1");
答案 5 :(得分:1)
在将值设置为数组之前,只需调用ensureCapacity
:
private Object[] ensureCapacity(Object[] array, int position) {
return array.length <= position ? Arrays.copyOf(array, position + 1) : array;
}
我的意思是这样的事情:
Object[] entry = new Object[]{};
entry = ensureCapacity(entry, 10);
entry[10] = 10;