gpt4 book ai didi

java - 在java lambda中编辑局部变量

转载 作者:行者123 更新时间:2023-11-30 03:01:35 27 4
gpt4 key购买 nike

我需要更改 中 lambda 事件处理程序内的局部变量.

SerialPort comPorts[] = SerialPort.getCommPorts();
MenuItem[] portsItems = new MenuItem[10];
int q=0;
for (SerialPort port : comPorts) {
portsItems[q] = new MenuItem(port.getSystemPortName());
portsItems[q].setOnAction(actionEvent -> {
portNum = q;
connect.setDisable(false);
});
comPortsMenu.getItems().add(portsItems[q]);
}

问题是我需要在每个循环中递增 q,但我不能这样做,因为 q 必须是 final 或 < strong>有效地最终在 lambda 中使用。

最佳答案

我认为您正在寻找类似的东西

for (SerialPort port : comPorts) {
portsItems[q] = new MenuItem(port.getSystemPortName());
int portNumber = q ; // effectively final
portsItems[q].setOnAction(actionEvent -> {
portNum = portNumber;
connect.setDisable(false);
});
comPortsMenu.getItems().add(portsItems[q]);

// increment:
q++ ;
}

关于java - 在java lambda中编辑局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813811/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com