java - 如何用Java中的匿名类替换监听器?

标签 java interface listener anonymous anonymous-class

我有一个名为 ClientRegistrationListener 的接口(interface)

public interface ClientRegistrationListener {
     void onClientAdded(Client client);
}

我在主类中还有一个ClientRegistrationListenerArrayList。在此列表中,我为我的类(class)添加监听器。

listeners.add(new PrintClientListener());

其中 PrintClientListener 是在此主类中创建的类<​​/p>

class PrintClientListener implements ClientRegistrationListener, Serializable {
    private static final long serialVersionUID = 2777987742204604236L;

    @Override
    public void onClientAdded(Client client) {
        System.out.println("Client added: " + client.getName());
    }
}

我的问题是如何用 Bank 类替换监听器 匿名类?

最佳答案

您可以通过在 new 调用后打开一个 block 来匿名实现该接口(interface):

listeners.add(new ClientRegistrationListener() {
   @Override
   public void onClientAdded(Client client) {
       System.out.println("Client added: " + client.getName());
   }
});

或者,更优雅的是,由于 ClientRegistrationListener 是一个函数式接口(interface)(即使它没有注释为接口(interface)),因此您可以使用 lambda 表达式匿名实现它:

listeners.add(client -> System.out.println("Client added: " + client.getName()));

关于java - 如何用Java中的匿名类替换监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70816575/

相关文章:

c# - 在多个类中继承相同接口(interface)的问题

java - Android-无法从 View 转换到按钮

java - 如何将 STDIO 重定向到 java 应用程序上的 GUI 组件?

generics - 哪些类型的系统足够强大来表达这一点?

oop - 接口(interface)作为能力或接口(interface)作为类型

Ajax 加载内容上的 JQuery 自动完成

android - 当 setOnTouchListener 设置为 webview - loadDataWithBaseURL 不起作用或显示相同的旧内容

java.awt.Button的java内部实现?

java - 为什么可以通过创建对象在main方法中调用非静态方法? java

java - 安装 python-bioformats 时 python setup.py Egg_info 失败