为什么以下列表不能在Java中转换为字符串数组
我有以下Java代码,当我运行它时,它会给出一些错误:为什么以下列表不能在Java中转换为字符串数组,java,arrays,string,list,Java,Arrays,String,List,我有以下Java代码,当我运行它时,它会给出一些错误: String[] stringArray1 = {"1","2","3"}; String[] stringArray2 = {"1","3","5"}; String[] stringArray3 = {"1","4","6"}; public String[] getString(int age) { List<String> list = new ArrayList<String>();
String[] stringArray1 = {"1","2","3"};
String[] stringArray2 = {"1","3","5"};
String[] stringArray3 = {"1","4","6"};
public String[] getString(int age) {
List<String> list = new ArrayList<String>();
switch (age) {
case 1:
Collections.addAll(list, stringArray1);
return composeStrings(list);
case 2:
Collections.addAll(list, stringArray2);
return composeStrings(list);
case 3:
Collections.addAll(list, stringArray3);
return composeStrings(list);
default:
return new String[]{"Not find", "Please specify the age"};
}
}
public String[] composeStrings(List<String> list) {
list.add("added a new string");
return (String[]) list.toArray();
}
这有什么问题?如何修复它 试试看:
public String[] composeStrings(List<String> list) {
list.add("added a new string");
return list.toArray(new String[list.size()]);
}
public String[]组合字符串(列表){
list.add(“添加了一个新字符串”);
return list.toArray(新字符串[list.size()]);
}
您可以阅读javadoc for toArray试试:
public String[] composeStrings(List<String> list) {
list.add("added a new string");
return list.toArray(new String[list.size()]);
}
public String[]组合字符串(列表){
list.add(“添加了一个新字符串”);
return list.toArray(新字符串[list.size()]);
}
您可以读取javadoc for toArray您必须将
字符串[]
作为参数传递给toArray()
方法,否则它将返回一个对象[]
public static void main(String[] args) {
String[] stringArray1 = { "1", "2", "3" };
String[] stringArray2 = { "1", "3", "5" };
String[] stringArray3 = { "1", "4", "6" };
List<String> list = new ArrayList<String>();
Collections.addAll(list, stringArray1);
Collections.addAll(list, stringArray2);
Collections.addAll(list, stringArray3);
String[] finalArray = list.toArray(new String[list.size()]);
for (String item : finalArray) {
System.out.println(item);
}
}
publicstaticvoidmain(字符串[]args){
字符串[]stringArray1={“1”、“2”、“3”};
字符串[]stringArray2={“1”、“3”、“5”};
字符串[]stringArray3={“1”、“4”、“6”};
列表=新的ArrayList();
Collections.addAll(列表,stringArray1);
Collections.addAll(列表,stringArray2);
Collections.addAll(列表,stringArray3);
字符串[]finalArray=list.toArray(新字符串[list.size()]);
用于(字符串项:finalArray){
系统输出打印项次(项);
}
}
您必须将字符串[]
作为参数传递给toArray()
方法,否则它将返回一个对象[]
public static void main(String[] args) {
String[] stringArray1 = { "1", "2", "3" };
String[] stringArray2 = { "1", "3", "5" };
String[] stringArray3 = { "1", "4", "6" };
List<String> list = new ArrayList<String>();
Collections.addAll(list, stringArray1);
Collections.addAll(list, stringArray2);
Collections.addAll(list, stringArray3);
String[] finalArray = list.toArray(new String[list.size()]);
for (String item : finalArray) {
System.out.println(item);
}
}
publicstaticvoidmain(字符串[]args){
字符串[]stringArray1={“1”、“2”、“3”};
字符串[]stringArray2={“1”、“3”、“5”};
字符串[]stringArray3={“1”、“4”、“6”};
列表=新的ArrayList();
Collections.addAll(列表,stringArray1);
Collections.addAll(列表,stringArray2);
Collections.addAll(列表,stringArray3);
字符串[]finalArray=list.toArray(新字符串[list.size()]);
用于(字符串项:finalArray){
系统输出打印项次(项);
}
}
为什么返回字符串[]
。。为什么不返回集合。不可修改列表(list)代码>我需要一个字符串这是非常复杂的。。您创建了一个列表,以便在从Object[]转换为String[]时再次读取时将其丢弃:您也没有检查addAll
的结果,为什么返回String[]
。。为什么不返回集合。不可修改列表(list)代码>我需要一个字符串这是非常复杂的。。您创建一个列表,以便在从对象[]转换为字符串[]时将其丢弃。您还没有检查addAll
的结果,因此不需要转换(字符串[])
。泛型类型在编译代码中被删除。通过向toArray
传递对象,可以确定并返回组件类型字符串。如果大小合适,则填充后,新数组将用作返回值。不需要强制转换(String[])
。泛型类型在编译代码中被删除。通过向toArray
传递对象,可以确定并返回组件类型字符串。如果大小合适,填充后,新数组将用作返回值。我也添加了示例代码,现在您可以看到根本没有强制转换。我也添加了示例代码,现在您可以看到根本没有强制转换。