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