假設我有一個名爲Importable
的接口,它有多個實現,其中一個接口是ImportableImpl
。轉換List <Staging <Importable>>轉換爲List <Staging <ImportableImpl >> with java 8 stream
我有一個Staging
類別的列表,它有一個通用類型:Importable
。
通過Java 8流,我想列表轉換:
List<Staging<Importable>> list1
到一個列表:
List<Staging<ImportableImpl>> list2
我已經肯定列表list1
是Staging<ImportableImpl>
列表,以便沒有ClassCastException
可以發生。 我不知道java是否授權使用泛型類型進行這種轉換。
我想嘗試這樣的事:
list1.stream()
.map(Staging::getImportable) // retrieve generic type
.map(ImportableImpl.class::cast)
.collect(Collectors.toList())
但有了這個,我會得到一個List<ImportableImpl>
而不是List<Staging<ImportableImpl>>
。
如何創建一個'Staging'對象? – BretC
爲什麼你需要這樣做?也許你應該添加更多的方法到你的界面。 – flakes