我需要更改javafx中的lambda事件处理程序内的局部变量。在java中编辑局部变量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
必须最终或有效最终将拉姆达内部使用。
@AndrewTobilko你引用了他的确切单词。 –
使'q'成为类实例字段。 –
你在哪里试图增加值?如果你只需要“在循环中”,你可以在lambda表达式中做到这一点。如果你需要一个具有q值的最终变量,只需复制它:'final int pNumber = q;'然后'portNum = pNumber;'将起作用。 –