当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《AsyncTask:ClassCastException:java.lang.Object[]无法强制转换为java.lang.String[]》经验,为你挑选了1个好方法。



1> marcinj..:

你是如何sendTask申报的?我想它只是AsyncTask sendTask;,如果是这样,那么改为:

AsyncTask 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是作为数组实现的,所以当你声明sendTask时,AsyncTask编译器会调用你的doInBackgroundwith new String[]{null,null,null},但当你声明它时,AsyncTaskdoInBackground调用它new Object[]{null,null,null}.

由于类型擦除,编译器将添加隐藏的隐式强制Object[]转换String[].这是为了允许以下代码正常工作:

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


@AlkaNigam如果它与上述问题无关 - 那么如果你创建一个新问题会更好
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有