可以使用java流以更好、更精確的方式重寫這段代碼嗎?我有一個對象數組IModel<?>[] models,在訪問地圖中的屬性之前,我需要將其轉換為實際的對象類。List<String> testStrs = Arrays.stream(models).map(item -> { TestClass testClass = (TestClass) item; return testClass.getStatus();}).collect(Collectors.toList())注:僅供個人對流的理解。請考慮IModel<?>[] models將始終具有TestClass類型的對象。我很清楚如果我們沒有任何適當的檢查,轉換會有多危險。
2 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
只需避免中間 testClass 變量即可。
List<String> testStrs = Arrays.stream(models)
.map(item -> ((TestClass) item).getStatus())
.collect(Collectors.toList())

拉莫斯之舞
TA貢獻1820條經驗 獲得超10個贊
您應該能夠使用以下內容。注意我添加了一個實例檢查以確保它可以投射。使用方法引用可以提高代碼的清晰度。
List<String> testStrs = Arrays.stream(models) .filter(TestClass.class::isInstance) .map(TestClass.class::cast) .map(TestClass::getStatus) .collect(Collectors.toList());
添加回答
舉報
0/150
提交
取消