IntelliJ建议我改变
new AbstractAction() {
public void actionPerformed(ActionEvent e) {
// my code here
}
}
至
(AbstractAction) (e) -> {
// my code here
}
当我将代码更改为上面建议的代码时,收到消息“ lambda转换的目标类型必须是接口”。
最佳答案
您应该实现抽象操作类,以便可以在功能上使用它。
public class FunctionalAction extends AbstractAction {
ActionListener myaction;
public FunctionalAction(ActionListener customaction) {
this.myaction = customaction;
}
@Override
public void actionPerformed(ActionEvent e) {
myaction.actionPerformed(e);
}
public ActionListener getMyaction() {
return myaction;
}
public void setMyaction(ActionListener myaction) {
this.myaction = myaction;
}
}
您可以按以下方式使用此类:
getTexfield().getActionMap().put(actionName, new FunctionalAction(ae -> {
}));