Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 抽象行动lambda_Java_Swing_Intellij Idea_Lambda - Fatal编程技术网

Java 抽象行动lambda

Java 抽象行动lambda,java,swing,intellij-idea,lambda,Java,Swing,Intellij Idea,Lambda,IntelliJ建议我改变 new AbstractAction() { public void actionPerformed(ActionEvent e) { // my code here } } 到 当我将代码更改为上面建议的代码时,我得到一条消息“lambda转换的目标类型必须是接口”。您应该实现抽象操作类,以便在功能上使用它 public class FunctionalAction extends AbstractActio

IntelliJ建议我改变

new AbstractAction() {
        public void actionPerformed(ActionEvent 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 -> {
        }));

如果没有一些周围的代码,就不可能知道这里发生了什么。这不是一个真正的问题:)也许IDE应该更好地建议
(ActionListener)(e)->{…}
getTexfield().getActionMap().put(actionName, new FunctionalAction(ae -> {
        }));