为了账号安全,请及时绑定邮箱和手机立即绑定

在较少的代码中使用 java 流转换和访问对象的属性

在较少的代码中使用 java 流转换和访问对象的属性

蓝山帝景 2023-06-21 15:05:39
可以使用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())


查看完整回答
反对 回复 2023-06-21
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您应该能够使用以下内容。注意我添加了一个实例检查以确保它可以投射。使用方法引用可以提高代码的清晰度。

List<String> testStrs 
     = Arrays.stream(models)
             .filter(TestClass.class::isInstance)
             .map(TestClass.class::cast)
             .map(TestClass::getStatus)
             .collect(Collectors.toList());


查看完整回答
反对 回复 2023-06-21
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信