给定3个变量(homeNumber,mobileNumber和workNumber),它们可以为null,但至少其中一个是String,我需要返回一个String数组,以便稍后在Android对话框中使用它。我这样做有麻烦。我尝试在ArrayList中执行它并删除所有null元素,这样就只有我想要的只有字符串的ArrayList,但是当我尝试将它更改为数组时,我在最后一行得到一个ClassCast异常。
ArrayList numberList = new ArrayList();
numberList.add(homeNumber);
numberList.add(mobileNumber);
numberList.add(workNumber);
numberList.removeAll(Collections.singleton(null));
final String[] items= (String[]) numberList.toArray();
任何想法如何解决这个问题?
答案 0 :(得分:8)
String[] items = new String[numberList.size()];
numberList.toArray(items);
答案 1 :(得分:1)
你可以做以下两件事之一:
传入你想要的数组类型(不需要实例化一个全长数组,无论性能如何):
final String[] items= (String[]) numberList.toArray(new String[0]);
然而,更好的解决方案是使用泛型:
List<String> numberList = new ArrayList<String>(); final String[] items= (String[]) numberList.toArray();
答案 2 :(得分:0)
ArrayList.toArray()的返回类型是Object [],除非您将数组作为第一个参数传递。在这种情况下,返回类型与传递的数组具有相同的类型,如果数组足够大,则使用它。这样做:
final String[] items= (String[])numberList.toArray(new String[3])
答案 3 :(得分:0)
更改
ArrayList numberList = new ArrayList();
到
List<String> numberList = new ArrayList<String>();
答案 4 :(得分:0)
使用List类的另一种方法toArray():
numberList.toArray(new String[numberList.size()]);