我正在阅读有关新功能的信息: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);
}
...等等?
最佳答案
来自 JLS 9.8
A functional interface is an interface that has just one abstract method, and thus represents a single function contract.
Lambda 需要这些功能接口(interface),因此仅限于它们的单一方法。实现多方法接口(interface)仍然需要使用匿名接口(interface)。
addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
...
}
@Override
public void mousePressed(MouseEvent e) {
...
}
});
关于Java 8 Lambda 表达式 - 嵌套类中的多个方法怎么样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21833537/