您如何
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);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)