2016-08-18 115 views
-2

覆蓋的方法想要返回Iterable<T>,但在我有Iterable<String>的方法中。我如何從Iterable<String>甚至Set<String>返回Iterable<T>Iterable <String> to Iterable <T>

代碼:

@Override 
public Iterable<T> getAll() { 
    Set<String> set = getCache().keySet(); 
    Iterable<String> iter = set; 
    return ? 
} 
+6

爲什麼即使使用泛型,如果它總是一個字符串? –

+0

你想要返回什麼?它是'keySet'嗎?如果是這樣,你的方法返回類型應該是'Iterable ',但我懷疑你應該返回其他的東西,這將是'Iterable '。 – Aaron

+0

是的,我預計會返回Iterable ,但我有一個設置。轉換可能嗎? – user840930

回答

5

答案很簡單 - 你不能。沒有轉換是可能的。

聲明Iterable<T> getAll()說,該方法有望返回Iterable遞送的T其中T表示當包封一般類型被實例化中使用的參數類型實例。

如果您的代碼只能返回Iterable<String>,那麼當TString時,它只能滿足呼叫站點的類型要求。如果這是可以接受的,那麼你也可以擺脫泛型類型參數T

相關問題