Java 正在从LinkedBlockingQueue放置数据<&燃气轮机;指向非object类型的数组
我试图使用.toArray()从LinkedBlockingQueue复制到dataStuff[]数据数组,但遇到异常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>
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);
谢谢,这有效,但我接受了第一个发布的答案。谢谢,这有效,但我接受了第一个发布的答案