Java中的通用回调

PNS*_*PNS 2 java generics callback

什么应该是Java可以用作通用回调机制的首选接口或类似模式?

例如,它可能是类似的东西

public interface GenericCallback
{
    public String getID();
    public void callback(Object notification);
    // or public void callback(String id, Object notification);
}
Run Code Online (Sandbox Code Playgroud)

覆盖hashCode()方法的情况下需要ID,以便被调用者识别调用者.

类似于上述的模式对于需要向条件(例如,处理结束)生成的类报告的对象是有用的.

在这种情况下,"父"类将使用getID()每个GenericCallback对象的方法来跟踪它们,Map<String, GenericCallable>并根据收到的通知添加或删除它们.

此外,如何实际命名这样的接口?

许多人似乎更喜欢Java Observer模式,但是在那里定义的Observable类并不方便,因为它不是绕过单一继承的接口,它承载的功能比上面简单的场景中实际需要的功能要多.

use*_*300 22

我会根据传递的Object类型对回调进行泛化.这对于侦听不同类事件的EventListener特别有用.例如

public interface Callback<T> {
   public void callback(T t);
}
Run Code Online (Sandbox Code Playgroud)

可以使用类型T作为Map中的键.当然,如果你想区分两个带有相同参数的回调,比如String,那么你需要像你的那样getID().

这里是关于将此用于事件监听器旧博客接口Events.Listener对应于Callback<T>上面的内容.和广播使用地图来追踪基于他们接受作为参数的类多听众.