Java 8 Lambda 表达式 - 嵌套类中的多个方法怎么样

标签 java lambda java-8 anonymous-class

我正在阅读有关新功能的信息: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/

相关文章:

java - 循环范围不起作用

java - 如何用 Java 打开 LMDB 数据库?

lambda - 为什么 map 内的 lambda 没有运行?

java - 克洛贾尔/Java : Most effective method for minimizing bandwidth consumption when performing complex operations on a stream of Amazon S3 data

java - 在字符数组中插入一个整数(不是它的 ascii)?

java - 由于内存不足错误,无法在 vagrant ubuntu 盒子中启动 Zookeeper 服务器

java-8 - Java 8 流和 RxJava 可观察量之间的区别

java - 使用新的 Java 8 DateTimeFormatter 进行严格的日期解析

amazon-web-services - 如何防止第三方应用程序滥用 AWS Lambda

ruby - 是否有任何 "simple"解释 Ruby 中的过程和 lambda 是什么?