您如何
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},但是当您将AsyncTaskthen 声明为then
时,则将
doInBackground使用with进行调用
new Object[]{null,null,null}。由于类型擦除,编译器将添加隐藏的隐式强制类型从
Object[]到
String[]。这是为了允许以下代码正常工作:
AsyncTask sendTask = ...; Object[] arg = new String[]{null,null,null}; sendTask.execute(arg);

![AsyncTask:ClassCastException:java.lang.Object []无法转换为java.lang.String [] AsyncTask:ClassCastException:java.lang.Object []无法转换为java.lang.String []](http://www.mshxw.com/aiimages/31/570753.png)
