我需要更改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;'將起作用。 –