Java 正在从LinkedBlockingQueue放置数据<&燃气轮机;指向非object类型的数组

Java 正在从LinkedBlockingQueue放置数据<&燃气轮机;指向非object类型的数组,java,exception,casting,classcastexception,toarray,Java,Exception,Casting,Classcastexception,Toarray,我试图使用.toArray()从LinkedBlockingQueue复制到dataStuff[]数据数组,但遇到异常 Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LdataStuff; at Main.main(Main.java:30) 使用以下代码 public static BlockingQueue<dataStuff>

我试图使用.toArray()从LinkedBlockingQueue复制到dataStuff[]数据数组,但遇到异常

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LdataStuff;
    at Main.main(Main.java:30)
使用以下代码

public static BlockingQueue<dataStuff> recurseFragments = new LinkedBlockingQueue<dataStuff>();

    public static void main(String args[]) throws IOException
    {
        dataStuff[] data = (dataStuff[]) recurseFragments.toArray();
    }
public static BlockingQueue recurseFragments=new LinkedBlockingQueue();
公共静态void main(字符串args[])引发IOException
{
dataStuff[]数据=(dataStuff[])recurseFragments.toArray();
}
我知道在将recurseFragments放入数组之前,它会将recurseFragments放入对象[],但为什么强制转换不起作用,我如何解决这个问题?

尝试使用

尝试使用

试试这个:

dataStuff[] data = recurseFragments.toArray(new dataStuff[0])
使用toArray的此签名,您可以获得正确的退货类型。

尝试以下操作:

dataStuff[] data = recurseFragments.toArray(new dataStuff[0])
使用toArray的此签名可以获得正确的返回类型。

因为
toArray()
返回一个
对象[]

Object[] toArray();
因此,您应该使用
toArray(T[]a)

<T> T[] toArray(T[] a);
因为
toArray()
返回一个
对象[]

Object[] toArray();
因此,您应该使用
toArray(T[]a)

<T> T[] toArray(T[] a);

谢谢,这有效,但我接受了第一个发布的答案。谢谢,这有效,但我接受了第一个发布的答案