Java 抽象行动lambda
IntelliJ建议我改变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
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 -> {
}));