[英]Generics extends
有一種方法:
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>>(){})
不知道這里出了什么問題。 有什么建議么?
也許您可以嘗試使用以下方法簽名:
protected <E> E retrieveData(TypeReference<E> ref)
Not sure what's wrong here. Any suggestions?
類型<? extends Object>
<? extends Object>
在方法主體中是未知的,此類型是否可以是List<SomeClass>
的實例。 編譯器無法確定並阻止List<SomeClass>
的返回。
使用protected <T> T retrieveData(TypeReference<T> ref)
具有“固定”類型,並且編譯器肯定知道返回的類型與TypeReference
的類型相同。 除此之外,編譯器還可以在調用以下方法時將類型T推斷為List<SomeClass>
: retrieveData(new TypeReference<List<SomeClass>>)
,不再需要進行List<SomeClass>
retrieveData(new TypeReference<List<SomeClass>>)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.