Java如何处理来自Object的Array的“Unchecked cast”
发布时间:2020-12-15 04:11:27 所属栏目:Java 来源:网络整理
导读:在我的 Android项目中,我创建了一个抽象的AsyncTask类,我在其中输入了URL,如果需要,还可以分页信息,因此我不需要继续编写HTTP内容等. 我已经创建了一个抽象方法onAsyncTaskResult(Object o),它必须在使用时实现. 但是,当将其转换为适当的对象(可以是不同类型
在我的
Android项目中,我创建了一个抽象的AsyncTask类,我在其中输入了URL,如果需要,还可以分页信息,因此我不需要继续编写HTTP内容等.
我已经创建了一个抽象方法onAsyncTaskResult(Object o),它必须在使用时实现. “未经检查的java.lang.Object强制转换为java.util.ArrayList< com.company.package.subpackage.MyItem>” 这是我执行所述函数的代码片段 new SuperCoolAsyncTask() { @Override protected void onAsyncTaskResult(Object o) { if(o instanceof ArrayList) { //generates warning in the following line AppConstants.scoreStatistics = (ArrayList<MyItem>)o; } } }.execute(get_url_score_statistics()); 我该如何将它转换为ArrayList< MyItem>没有产生警告? 没有< MyItem>声明它会抛出“未选中的作业” 解决方法
没有警告就不能这样做.您正在将Object转换为其他类,即使Object是ArrayList的实例,您也不知道它是泛型类型.
更新: 如果您自己编写SuperCoolAsyncTask,则可以使用泛型对类进行参数化: public abstract class SuperCoolAsyncTask<ResultType> { protected abstract void onAsyncTaskResult(ResultType o); } 然后,当您调用代码时: new SuperCoolAsyncTask<ArrayList<MyItem>>() { @Override protected void onAsyncTaskResult(ArrayList<MyItem> o) { AppConstants.scoreStatistics = o; } }.execute(get_url_score_statistics()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |