Hallo zusammen,
Ich möchte gerne folgenden Code realisieren:
JPanel kritSelectionPanel = new JPanel();
JCheckBox selectBox = new JCheckBox();
selectBox.setActionCommand(k.getName());
selectBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
toggleSelection((JCheckBox) e.getSource(), k);
}
});
return kritSelectionPanel;
}```
Das Problem ist, dass ich im ActionListener die Methode ```toggleSelection((JCheckBox) e.getSource(), k);``` nicht aufrufen kann, da k nicht final ist. Gibt es eine Möglichkeit, k in die Methode zu setzen ohne es final zu machen und ohne eine globale Variable zu definieren?
Falls es wichtig ist: Ich schreibe in Java 1.6.
Du könntest eine finale Zwischenvariable setzen - aber den Parameter final zu setzen wäre die bessere Variante. Denn Parameter solltest du nicht überschreiben. Hatte damit schon Probleme, weil Kollegen nicht der Meinung waren und sich zwischendrin die Variable geändert hat. Das hat zu unschönen Effekten geführt. Damals habe ich mir daraufhin mein Eclipse so eingestellt, dass es beim speichern automatisch alle Parameter final setzt.
Okay dann dazu noch eine Anfängerfrage weil ich so gut wie nie mit final arbeite: Wenn k final ist, dann kann ich die Werte von k doch noch ändern, oder? Also Methoden wie k.setName(“neuer Name”) funktionieren dann noch oder?