【发布时间】:2018-11-12 10:08:42
【问题描述】:
我正在尝试将列表克隆到新列表并在新列表中设置属性。 我正在尝试使用 Java8 Stream,因为它使克隆变得简单。 我的代码有效,但它使 Sonar 产生了这种代码气味:
不应声明局部变量然后立即返回或抛出(squid:S1488)
有没有办法在不使用局部变量的情况下做到这一点? 代码:
List<myObject> clonedList = listToClone.stream()
.map(item -> {
cloned = new myObject(item);
cloned.setLifeCycle("someLifeCycle");
return cloned;
})
.collect(Collectors.toList());
谢谢
【问题讨论】:
-
你能用完整的代码和错误编辑你的问题吗?
-
我不确定您的问题出在 map 方法上。你能展示剩下的方法吗?我对您的 map 方法的问题是该变量未在 map 方法中声明。我总是使用尽可能小的范围。但这不是你的问题
-
@Sodala 另一方面,如果 cloned 不是局部变量,则不会编译。奇怪。
-
请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。否则我们无法回答您的问题并为您提供帮助。
-
这个答案是指过滤器但基本相同:stackoverflow.com/a/45793560/9354242
标签: java dictionary java-stream