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

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

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