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 -> {
        }));

07-24 09:39