0

有一个方法:

protected List<? extends Object> retrieveData(TypeReference<List<? extends Object>> ref)

当我尝试应用它时:

return (List<SomeClass>) retrieveData(new TypeReference<List<SomeClass>>() {});

我收到此通知

AbstractJsonService 类型中的方法retrieveData(TypeReference<List<? extends Object>>)不适用于参数(new TypeReference<List<SomeClass>>(){})

不知道这里有什么问题。有什么建议么?

4

2 回答 2

3

也许您可以尝试使用以下方法签名:

protected <E> E retrieveData(TypeReference<E> ref)
于 2013-03-25T09:29:34.583 回答
1

Not sure what's wrong here. Any suggestions?

方法体中的类型<? extends Object>未知,此类型可能是也可能不是实例List<SomeClass>。编译器无法确定并阻止返回 a List<SomeClass>

使用 a 时,protected <T> T retrieveData(TypeReference<T> ref)您有 T 的“固定”类型,编译器确定返回的类型与TypeReference's 的类型相同。除此之外,编译器能够List<SomeClass>在调用方法时推断出类型 T retrieveData(new TypeReference<List<SomeClass>>),不再需要进行强制转换List<SomeClass>

于 2013-03-25T09:44:49.997 回答