2
我想達到的效果是通過下面的例子描述:是否有可能創建編譯時檢查參數化泛型類型?
public <T extends Collection> T<String> mainSolution(T<String> words)
{
return Collections2.transform(words, w -> w.length() + w.toUpperCase());
}
我想達到的效果是通過下面的例子描述:是否有可能創建編譯時檢查參數化泛型類型?
public <T extends Collection> T<String> mainSolution(T<String> words)
{
return Collections2.transform(words, w -> w.length() + w.toUpperCase());
}
我想你的意思是,你要的String
個Collection
(或子類)傳遞給它做了一個方法轉化並在轉化後返回收集。由此產生的集合與傳入的集合類型相同。
如果是這種情況,那麼您幾乎就是在那裏,只是偶然發現了一些語法。
下面是代碼:
public <T extends Collection<String>> T mainSolutions(T words)
{
return (T) Collections2.transform(words, w -> w.length() + w.toUpperCase());
}
<...>
你有泛型類型參數,然後按照T
是方法的返回類型,顯然它使用相同類型T
的1個參數的尖括號內。
不,Java沒有像這樣更高級的泛型。你不能用Java類型系統來表達它。 – 2014-09-25 21:52:51
我想你的意思是'>',而不是原始類型''。 –
gparyani
2014-09-25 22:21:39
它有什麼不同嗎?由於不支持更高版本的泛型,因此類型參數將被擦除。 – 2014-09-25 22:34:07