gpt4 book ai didi

Java 如何处理对象中的 Array 的 "Unchecked cast"

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:24 24 4
gpt4 key购买 nike

在我的 Android 项目中,我创建了一个抽象的 AsyncTask 类,我在其中输入 URL 和如果需要的分页信息,这样我就不需要继续编写 HTTP 内容等。

我创建了一个抽象方法 onAsyncTaskResult(Object o) ,它必须在使用时实现。但是,当将其转换为适当的对象(可以是不同类型)时,IDE 会给我一个警告

"Unchecked cast for java.lang.Object to java.util.ArrayList<com.company.package.subpackage.MyItem>"

这是我实现上述功能的代码 fragment

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 转换为其他类,即使 ObjectArrayList 的实例,您也不知道它是泛型类型。

更新:

如果您自己编写了 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());

关于Java 如何处理对象中的 Array<MyItem> 的 "Unchecked cast",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17274441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com