我正在尝试使用.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();
}
据我所知,它将recurseFragments放入一个对象[],然后再将它放入数组中,但为什么转换不起作用?如何解决?
答案 0 :(得分:2)
dataStuff[] data = recurseFragments.toArray(new datastuff[0]);
答案 1 :(得分:1)
试试这个:
dataStuff[] data = recurseFragments.toArray(new dataStuff[0])
使用toArray的此签名,您可以获得正确的返回类型。
答案 2 :(得分:1)
因为toArray()
会返回Object[]
Object[] toArray();
因此,您应该使用toArray(T[] a)
代替。
<T> T[] toArray(T[] a);
以这种方式使用:
recurseFragments.toArray(new datastuff[0]);