AsyncTask:ClassCastException:java.lang.Object []无法转换为java.lang.String []

AsyncTask:ClassCastException:java.lang.Object []无法转换为java.lang.String [],第1张

AsyncTask:ClassCastException:java.lang.Object []无法转换为java.lang.String []

您如何

sendTask
申报?我想它是简单的
AsyncTask sendTask;
,如果是这样,请将其更改为:

AsyncTask<String, String, String> sendTask;

此异常的原因与以下代码中发生的原因类似:

Object arr1[] = new Object[] {null,null,null};String arr2[] = (String[])arr1; // here java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

Java中的VarArgs是作为数组实现的,因此,当您

AsyncTask<String, String,String>
将sendTask声明为as时,编译器
doInBackground
使用with进行调用
newString[]{null,null,null}
,但是当您将
AsyncTask
then 声明为then
时,则将
doInBackground
使用with进行调用
new Object[]{null,null,null}

由于类型擦除,编译器将添加隐藏的隐式强制类型从

Object[]
String[]
。这是为了允许以下代码正常工作:

  AsyncTask sendTask = ...;  Object[] arg = new String[]{null,null,null};  sendTask.execute(arg);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5561997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存