Java 8 Lambda表达式-嵌套类中的多个方法呢?

我在以下位置阅读有关新功能的信息:http : //www.javaworld.com/article/2078836/java-se/love-and-hate-for-java-8.html

我看到了下面的示例:

使用匿名类:

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {

System.out.println("Action Detected");

}

});

使用Lambda:

button.addActionListener(e -> {

System.out.println("Action Detected");

});

如果某人MouseListener想要在匿名类中实现多个方法,该怎么办,例如:

public void mousePressed(MouseEvent e) {

saySomething("Mouse pressed; # of clicks: "

+ e.getClickCount(), e);

}

public void mouseReleased(MouseEvent e) {

saySomething("Mouse released; # of clicks: "

+ e.getClickCount(), e);

}

… 等等?

回答:

你可以通过使用辅助程序接口将多方法接口与lambda一起使用。这适用于这样的侦听器接口,在这些接口中,不需要的方法的实现是微不足道的(即,我们也可以做MouseAdapter提供的事情):

// note the absence of mouseClicked…

interface ClickedListener extends MouseListener

{

@Override

public default void mouseEntered(MouseEvent e) {}

@Override

public default void mouseExited(MouseEvent e) {}

@Override

public default void mousePressed(MouseEvent e) {}

@Override

public default void mouseReleased(MouseEvent e) {}

}

你只需要定义一次这样的帮助程序接口。

现在,你可以Component c像这样添加点击事件的侦听器:

c.addMouseListener((ClickedListener)(e)->System.out.println("Clicked !"));

以上是 Java 8 Lambda表达式-嵌套类中的多个方法呢? 的全部内容, 来源链接: utcz.com/qa/430909.html

回到顶部