Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么以下列表不能在Java中转换为字符串数组_Java_Arrays_String_List - Fatal编程技术网

为什么以下列表不能在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>();

我有以下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>();

        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
传递对象,可以确定并返回组件类型字符串。如果大小合适,填充后,新数组将用作返回值。我也添加了示例代码,现在您可以看到根本没有强制转换。我也添加了示例代码,现在您可以看到根本没有强制转换。