Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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
String[]方法返回一个非空的java_Java_Eclipse_Intellij Idea_Porting - Fatal编程技术网

String[]方法返回一个非空的java

String[]方法返回一个非空的java,java,eclipse,intellij-idea,porting,Java,Eclipse,Intellij Idea,Porting,我最近将eclipse项目移植到IJ,我的数组随机化器返回以下错误 java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String; ([Ljava.lang.Object; and [Ljava.lang.String; are in module java.base of loader 'bootstrap') at Constants.func.ra

我最近将eclipse项目移植到IJ,我的数组随机化器返回以下错误

java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String; ([Ljava.lang.Object; and [Ljava.lang.String; are in module java.base of loader 'bootstrap')
    at Constants.func.ranArr(func.java:42)

这是该方法的代码

    public static String[] ranArr(String[] arr) {
        List<String> i = Arrays.asList(arr);
        Collections.shuffle(i);
        String[] r = (String[]) i.toArray();
        return r;
    }
公共静态字符串[]ranArr(字符串[]arr){
列表i=Arrays.asList(arr);
收藏。洗牌(一);
字符串[]r=(字符串[])i.toArray();
返回r;
}

如何修复它,它在Eclipse中工作

您可以将
(String[])I.toArray()替换为
I.toArray(新字符串[0])
因为ArrayList可以存储任何类型的项,所以它在内部使用
对象[]
来存储数组的内容

当您调用
toArray()
时,它只返回该内部数组的一个副本,该数组又是一个
对象[]

事实上,由于类型擦除(泛型类型的实例在运行时不知道其类型参数是什么类型的事实),
ArrayList
无法执行任何其他操作

正如您所知,您正在存储字符串,您可以使用@Timur建议的
toArray(新字符串[0])


该函数将查看您传递的数组的类型,并创建一个具有该类型的新数组。

确保您的intellijidea使用相同的jdk作为Eclipse运行。它使用相同的jdk Java SE-1。8这不会在Eclipse中运行。它给出了完全相同的错误。是的,它工作了,但是为什么它工作在eclipse而不是IJ?很确定它不依赖于您的IDE,因为它发生在运行时。不幸的是,我没有使用Eclipse进行复制和深入研究。
    public static String[] ranArr(String[] arr) {
        List<String> i = Arrays.asList(arr);
        Collections.shuffle(i);
        String[] r = (String[]) i.toArray();
        return r;
    }