java lambda 变量_java – 从lambda表达式引用的局部变量必须...
您只需将readln2的值复制到最终变量中即可:
final String labelText = readln2 ;
Button button = new Button("Click the Button");
button.setOnAction(e -> l.setText(labelText));
如果你想每次都获取一个新的随机行,你可以缓存感兴趣的行并在事件处理程序中选择一个随机行:
Button button = new Button("Click the button");
Label l = new Label();
try {
List lines = Files.lines(Paths.get("/temp/mantra.txt"))
.skip(low)
.limit(high - low)
.collect(Collectors.toList());
Random rng = new Random();
button.setOnAction(evt -> l.setText(lines.get(rng.nextInt(lines.size()))));
} catch (IOException exc) {
exc.printStackTrace();
}
// ...
或者您可以在事件处理程序中重新读取该文件.第一种技术(更快)但可能消耗大量内存;第二个不会将任何文件内容存储在内存中,但每次按下按钮时都会读取文件,这可能会使UI无响应.
你得到的错误基本上告诉你出了什么问题:你可以从lambda表达式中访问的唯一局部变量是final(声明为final,这意味着它们必须被赋值一次)或“有效final”(这基本上意味着)你可以让它们最终完成而不需要对代码进行任何其他更改).
您的代码无法编译,因为readln2被多次赋值(在循环内),因此无法将其声明为final.因此,您无法在lambda表达式中访问它.在上面的代码中,lambda中访问的唯一变量是l,lines和rng,它们都是“有效的最终”,因为它们只被赋值一次.(你可以将它们声明为final,代码仍然可以编译.)
java lambda 变量_java – 从lambda表达式引用的局部变量必须...相关推荐
- java lambda 实现_Java 8 Lambda实现原理分析
PDF文档已上传Github 为了支持函数式编程,Java 8引入了Lambda表达式,那么在Java 8中到底是如何实现Lambda表达式的呢? Lambda表达式经过编译之后,到底会生成什么东西呢 ...
- java lambda 实现_Java 8 Lambda实现原理分析(转载)
原文出处:http://www.cnblogs.com/WJ5888/p/4618465.html 为了支持函数式编程,Java 8引入了Lambda表达式,那么在Java 8中到底是如何实现Lamb ...
- java循环变量_Java初学——Java入门变量 常量选择循环结构
一.初识java 1.jdk的介绍 下载安装jdk 安装后会存在默认的安装路径 bin 目录:存放编译,运行 Java 程序的可执行文件 lib 目录:存放 Java 的类库文件 jre 目录:存放 ...
- java环境变量_java环境变量
1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把 jdk安装目录下的bin目录增加到现有的PATH ...
- java lambda使用_Java 8 Lambda表达式的使用
lambda表达式允许你通过表达式来代替功能接口.lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块). Lambda表达式还增 ...
- java nextintln_java – 从lambda表达式引用的局部变量必须是final或者有效的final
我有一个JavaFX 8程序(适用于JavaFXPorts交叉平台),它实际上是为了做我想做的事情,但却是一步之遥.程序读取文本文件,对行进行计数以建立随机范围,从该范围中选取一个随机数并读取该行以进 ...
- java基础变量_Java基础语法之变量和常量
上行没有"{"时,下行代码与上行首字母对齐 标识符 概述 在Java中对变量.常量.函数和语句块都是有名字的,他们的名字统称为Java标识符.是为类.对象.方法.变量.接口和自定义 ...
- java 内部变量_java 中的内置数据类型
1, 基本数据类型 Java是强类型语言, 对于每一种数据都定义了类型,基本数据类型分为数值型,字符型,布尔型.数值型又分为了整型和浮点型. 整型又分为byte, int, short long. ...
- java块语句_Java运算符、表达式、语句块
一.运算符 在java中用于程序计算的操作i发统称为运算符,运算符分为如下几类: 1.算术运算符 算术运算符 说明 + 加号两边是数值,可以运算,如果一边存在字符串,则当作连接符 a+b - 两个数相 ...
最新文章
- RedisManager使用手册(二) -- 配置文件详解
- 蓝桥杯JAVA省赛2013-----B------3(振兴中华)
- php多线程 static变量,private static和public static的比较:多线程间
- C++中全局变量的使用
- iText报表Java_(例)Java生成PDF报表 iText
- scipy.signal.find_peaks(峰值检测)
- HttpMessageConvert
- php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--服务端
- 算法导论(原书第3版) 目录
- lena图的直方图以及与其他图像的直方图匹配
- UiPath-压缩解压缩文件
- Seaborn 绘图中设置字体及大小
- python项目实战:免费下载某平台任意付费音乐
- 基于yolov5的目标检测和单目测距
- 强化学习: 贝尔曼方程与马尔可夫决策过程
- 操作系统内核框架图整理
- 关于ERP系统提前期运算逻辑的三点介绍(转)
- Django的CBV和FBV
- day01-初识计算机
- java scope是什么意思_Tutorial:Javascript中的作用域(scope)是什么?(一)(试用FIREBUG了解)...
热门文章
- Win10电脑定时关机无效怎么办
- java反射获取实体类_java 反射获取类对象的三种方式
- 常见移动机器人多角度对比分析(图片版)
- cfiledialog 保存 扩展名_吃不完的红薯很难保存?教你一招,放1年不烂不发芽,简单实用...
- DP4 最小花费爬楼梯
- 洛谷——P2393 yyy loves Maths II
- { parser: “babylon“ } is deprecated; we now treat it as { parser: “babel“ }.
- Eigen教程(6)之高级初始化方法
- 使用这个,自定义AlertDialog在你手里都不是问题
- python中encode()函数的用法