簡體   English   中英

泛型擴展

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM