【发布时间】:2019-12-24 07:15:11
【问题描述】:
我正在使用 java 8 流功能,现在我想将字符串值存储在局部变量中,但它显示 local variables referenced from a lambda expression must be final or effectively final。我也尝试了 final 关键字,它变得相同。我需要澄清它是否可能。
public static void main(String[] args) {
List list = Arrays.asList("java", "stream", "scala");
String data = "";
list.forEach(action -> {
data = action.toString();
System.out.println("data :" + data);
});
}
【问题讨论】:
-
你需要
data在 lambda 之外?看来您可以删除变量 -
即使有可能,又有什么意义呢?你用列表的每个元素覆盖
data的值,所以它最后会有最后一个元素。你想连接所有这些Strings 吗?如果你这样做了,还有其他方法可以实现这一点。 -
是的,我需要在 lambda 之外。无论我存储在列表中。例如:data=java
-
显示你在 lambda 之外使用
data所做的事情 -
你想用那个变量做什么? @AjithDeivam 以及为什么
标签: java java-8 java-stream