我对泛型方法的显式类型参数有问题.我知道我可以这样做:
Foo.function();
假设有一个
void function() {...}
在Foo类中的函数.确切的问题是:
>我想下载一些内容(Android版附Ion)
>这些内容类似(文章,BlogArticle,…),都实现了ContentItem接口
>目前下载如下:
例如新闻
private void downloadNews() {
Ion.with(this)
.load(URL_NEWS)
.as(new TypeToken>(){})
.setCallback(new FutureCallback>() {
@Override
public void onCompleted(Exception e, List result) {
// do something with result
}
});
}
如果我想下载博客文章,我必须更改网址和文章类(对于BlogArticle).
我试图制作这样的通用函数:
private void download(String url) {
Ion.with(this)
.load(url)
.as(new TypeToken>(){})
.setCallback(new FutureCallback>() {
@Override
public void onCompleted(Exception e, List result) {
// do something with result
}
});
}
并调用该函数
this.download(url);
没关系,编译好.跑完后我得到了
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.my.packagename.model.ContentItem
问题是它没有使用显式类将Json映射到pojo.
你能建议我一个通用的解决方案吗?