<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>回调 on 轻语慕心</title>
    <link>https://muxin.io/tags/%E5%9B%9E%E8%B0%83/</link>
    <description>Recent content in 回调 on 轻语慕心</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Tue, 28 Jun 2016 22:42:59 +0000</lastBuildDate>
    <atom:link href="https://muxin.io/tags/%E5%9B%9E%E8%B0%83/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Java callback 回调学习</title>
      <link>https://muxin.io/posts/2016-06-28-java-callback-learnning/</link>
      <pubDate>Tue, 28 Jun 2016 22:42:59 +0000</pubDate>
      <guid>https://muxin.io/posts/2016-06-28-java-callback-learnning/</guid>
      <description>&lt;p&gt;最近接触了一些前端 JavaScript 方面的东西，觉得 JS 最方便的地方便是各种回调函数，无论是 Ajax 还是与用户的前端交互，都是通过回调函数的形式实现的。于是乎来到 Java 中搜索了一下有关回调的相关内容，结果发现还真的有。查了很多文章，总算是弄清楚了 Java 中回调的使用方法，然而大部分讲解都没有说到其实际的用途，于是便再次进行记录，也是给自己一个备忘。&lt;/p&gt;
&lt;h2 id=&#34;什么是回调&#34;&gt;什么是回调&lt;/h2&gt;
&lt;p&gt;接触过 JS 或者做过服务端接口的人应该都会对回调十分熟悉。按我的理解，假设有 A 和 B 两个模块，A 调用 B 来执行某一个功能，这个功能执行可能会花费一些时间，而且 A 希望在 B 执行完之后得到通知，那么 B 执行完相关功能之后再对 A 进行通知的这个过程，就叫做回调。通俗来讲就是甲乙两个人，甲需要一把梯子来换灯泡，让乙去拿来，乙把梯子拿来以后需要告诉甲：梯子已经到了，可以换灯泡了。&lt;/p&gt;
&lt;p&gt;在 JS 中的回调十分便捷，只要将收到回调后需要执行的方法传入调用的方法中即可，这种回调方式的调用不仅限于 JS，Ruby 中也有类似的语法，然而对于 Java 来说，实现回调虽然有些麻烦，但是仍然有着解决办法。&lt;/p&gt;
&lt;h2 id=&#34;java-中的回调&#34;&gt;Java 中的回调&lt;/h2&gt;
&lt;p&gt;在 Java 中实现一个回调不像脚本语言那样简洁优雅，但是会有一种更加规范的感觉。&lt;/p&gt;
&lt;p&gt;此处还是用之前提到的的 A 和 B，生命这两个模块为两个类，主要归结为以下步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定义一个 Callback 接口，用来指明回调时候需要执行的方法。&lt;/li&gt;
&lt;li&gt;让 A 类实现 callback 接口，并且 A 类需要持有一个 B 的实例对象 b（因为只有持有才能调用）。&lt;/li&gt;
&lt;li&gt;让 B 类中实现一个参数带有 callback 接口参数的方法 f(Callback callback, Object args)。&lt;/li&gt;
&lt;li&gt;A 类的实例对象 a 调用 b.f，并且将 a 自身作为 callback 参数传入。&lt;/li&gt;
&lt;li&gt;b.f 此时可以通过 callback 调用 A 中定义的 Callback 接口中的问题。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;乍看下来感觉整个人都不好了，乱七八糟的，其实结合代码的话会看着很简单。此处以刚才说到的甲让乙搬梯子，然后甲用梯子换灯泡的情景，写一个 Demo。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
