我有以下代码:

String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");

这两个追加没有编译。这是如何正确工作的?


当前回答

你可以简单地这样做:

System.arraycopy(initialArray, 0, newArray, 0, initialArray.length);

其他回答

数组大小不可修改。如果你必须使用数组,你可以使用:

System.arraycopy(src, srcpos, dest, destpos, length); 

正如tangens所说,数组的大小是固定的。但是你必须先实例化它,否则它将只是一个空引用。

String[] where = new String[10];

这个数组只能包含10个元素。所以一个值只能附加10次。在代码中,您正在访问一个空引用。这就是为什么它不起作用。为了有一个 动态增长的集合,使用数组列表。

它不是编译,因为数组没有名为append的函数更好,正确的方法是使用ArrayList

import java.util.ArrayList;

ArrayList where = new ArrayList<String>();

where.add(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1")
where.add(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1")

您需要使用收集列表。不能重新定义数组的维数。

您可以创建一个数组列表,并使用Collection.addAll()将字符串数组转换为您的数组列表