小编Tim*_*age的帖子

是否有标准的Java Receiver/Handler接口?

我反复发现自己想要使用如下所示的界面:

interface Handler<T> {
  void handle(T toHandle);
}
Run Code Online (Sandbox Code Playgroud)

在您希望围绕资源强制执行try-finally结构而不依赖API用户执行此操作的情况下,它尤其有用.

您的API实现可能如下所示:

 public void loadResource(Handler<SomeResource> resourceHandler) {
    SomeResource r = fetchTheResource();
    try {
      resourceHandler(r);
    finally {
      r.close();
    }
 }
Run Code Online (Sandbox Code Playgroud)

...... API消费者可以安全地做到:

loader.loadResource(new Handler<SomeResource>() {
  public void handle(SomeResource resource) {
    // use the resource, no need to worry about closing it.
  }
});
Run Code Online (Sandbox Code Playgroud)

我知道Closeable界面.这不是那么普遍的目的 - 它不能强迫消费者正确关闭资源.

可以同样调用接口Receiver.番石榴Supplier几乎是相反的,但没有Receiver.

是否有一些核心接口具有我错过的这种结构?我在某种程度上做了其他人认为有些过分的事情吗?

我注意到在C#上下文中已经提出了完全相同的问题:这个接口是否已经存在于标准.NET库中?

java

5
推荐指数
1
解决办法
741
查看次数

标签 统计

java ×1