java - java中的Lambda:变量与类字段
问题描述
lambda 中的变量必须是有效的 final。好的。但是为什么允许在下面的示例代码中分配类字段值呢?
堆和堆栈会导致这种差异吗?为什么?
class Scratch
{
public String field = "class field";
public void example()
{
Function<String, Integer> funcWithField = s ->
{
field = "New field value from lambda";
// IT`s OK here
return field.length();
};
String variable = "var";
Function<String, Integer> funcWithVariable = s ->
{
// Though such things are restricted!
// variable = "some other loooong value for variable";
return variable.length();
};
}
}
解决方案
推荐阅读
- hyperledger-fabric - 初始化 Fabric-CA 服务器时出错
- php - PHP:成功提交后清除表单条目
- neo4j - Neo4j-Cypher:从路径中删除一个节点并保持到路径的所有节点的链接
- node.js - node-cron - 弃用警告: imediateStart 已弃用并将被删除
- postgresql - Postgres:更新 TEXT 列的值(CLOB)
- python - 调用外部api处理异常
- php - 为什么我的提交按钮在我用 PHP 制作的这个表单上不起作用?
- javascript - 在 URL 中查询更改后反应如何呈现页面
- sql - 尝试查询酒店的数据库以返回 SQLZOO 上特定日期的未占用房间的 ID
- visual-studio - 水晶报表回合