可以使用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
提交
取消