2 lyc335171398 lyc335171398 于 2015.06.20 14:35 提问

java中的接口回调有什么用啊?它的价值体现在哪里?

java中接口回调作用在哪里,看半天不知道到它有什么用,求大神仔细说下。

5个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.20 14:41
已采纳
比如A类中有B类,B类中又要更新A类信息的时候就有用了,或者说异步的时候。
 假定我们希望在某个事件发生时得到通知。我们可以定义一个接口:
InterestingEvent.java
package org.zj.sample;
public interface InterestingEvent {
    public void interestingEvent ();
}
这使得我们可以控制实现该接口的类的任何对象。因此,我们不必关心任何外部类型信息。
发出事件信号的类必须等待实现了 InterestingEvent 接口的对象,并在适当时候调用 interestingEvent() 方法。
EventNotifier.java
package org.zj.sample;
public class EventNotifier {
    private InterestingEvent ie;
    private boolean somethingHappened;

    public EventNotifier(InterestingEvent event) {
         ie = event; // 保存事件对象以备后用。
         somethingHappened = false; // 还没有要报告的事件。
    }

    public void doWork() {
         if (somethingHappened) { // 检查设置的谓词。
           ie.interestingEvent();// 通过调用接口的这个方法发出事件信号。
         }
    }

    public void setHappened(){//设置谓词。
         somethingHappened=true;
    }
}
在上例中,使用 somethingHappened 谓词来跟踪是否应触发事件。希望接收事件通知的代码必须实现 InterestingEvent 接口,并将自身引用传递给事件通知程序。
CallMe.java
package org.zj.sample;
public class CallMe implements InterestingEvent {
    @SuppressWarnings("unused")
    private EventNotifier en;

    public CallMe() {
         // 注意 EventNotifier (InterestingEvent event),应该传递一个接口类型。
         // 而下面将this,即实现了InterestingEvent接口的CallMe实例传递给
//EventNotifier。也就是所谓的接口回调了。
         en = new EventNotifier(this); // 创建事件通知程序,并将自身引用传递给它。
    }

    // 为事件定义实际的处理程序。
    public void interestingEvent() {
              System.out.println("Call me Hello.");
    }
}
下面写个测试类。
Test.java
package org.zj.sample;
public class Test {
    public static void main(String[] args) {
         EventNotifier en=new EventNotifier(new CallMe());
         en.setHappened();
         en.doWork();
    }
}

sunhangok
sunhangok   2015.06.20 19:28

存在即合理,很多java设计模式都要使用接口回调

ProLayman
ProLayman 这句话谁都知道,放在这里没有任何意义,大家到这里来就是想搞清楚为什么要这样。
一年多之前 回复
yl123456654321
yl123456654321   2015.06.23 11:49

android里好像是大量采用回调的...

baitianjun
baitianjun   2015.06.21 23:35

初学者先知道有这么回事,一开始也不会经常用到。以后接触设计模式什么的你会有更深的理解

miracle_yao
miracle_yao   2015.07.03 18:09
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
大数据的核心价值主要体现在哪里
大数据的核心价值主要体现在哪里?相信很多人或多或少都听过“大数据”这个词,但是对于它的主要体现却并不了解。我们现在所处的时代就是数据日益渗透生活的时代,大数据与人们的生产生活有着越来越密切的关系。刚刚闭幕的2017中国国际大数据产业博览会又为火热的大数据产业添了一把火,博览会签约金额达167亿余元,签约意向金额为256亿元左右。这一全球首个以大数据为主题的展会,再一次撩起了大数据的神秘面纱,展示了
一个人的价值
一个人的价值是什么?一个人的价值在于对社会进步做出的贡献。看似无情的一句话背后,蕴涵着怎样的博爱,寻常的人可能永远也不会懂。
前端工程师的价值体现在哪里?
这是一个很老的话题“前端工程师的价值体现在哪里?”。有人说:“前端工程师之于网站的价值犹如化妆师之于明星的价值。”一位好的Web前端开发工程师在知识体系上既要有广度,又要有深度。当然,Web前端工程师并不是设计师,每天接触最多的是代码,代码,还是代码。对此,你是如何给自己定位的?你的价值是否能够得到很好的体现?如今,旧话重提无非是想与开发者们共同探讨下前端工程师的价值所在,希望对你有所感悟。
软件测试人员的价值
最近公司一直在提“软件测试人员的价值到是什么”,测试的价值应该体现在哪里呢?    在网上看到一本书中的一句话“软件测试的真正价值并不体现在代码中找出了多少缺陷,而是发现设计和编程人员解决问题方法上的局限,思路中的狭隘和技能方面的不足”,个人觉得有写道理,分享一下。    下面是看到的一段话,也分享一下:   常常,在面试时我会问应聘者:“做测试工作,让你感到自豪的事是什么?”,大部分人回答
你上班价值的在哪里?
最近在思考一个问题,如果我离开现在的公司,我收获到了什么。当我们开始思考这个问题的时候,或许我们的工作才能真正变得有意义。你并不是为公司而工作,你只是暂时地出售自己的时间来换取金钱回报,你工作的真正意义在于自己价值的提升;你混的也不是公司的日子,而是自己仅有的不可再生的宝贵注意力。当我们明白了,工作和生活的一切都是为了提升自己的价值,用罗胖的话说就是让自己变得更值钱。我们的工作将不再是为公司工作,而
java为什么要使用接口回调
也许你在编程的过程中会发现这样一行代码:格式如: 接口 接口变量 = new 接口 子类();Link<String> link = new ArrayList<String>(); //Link为一个接口 ArrayList为一个泛型类那么为什么前面要用接口引用new 出来的对象呢?可以告诉你的是,这是接口的回调,是接口多态的一种方式。但是为什么要这样使用呢?其优点在哪里?有什么缺点?在回
提升业务效率,体现IT价值
作为程序员,大家大多数人都是在软件公司中供职,或者在互联网公司中工作,但也肯定有不少人和我一样,是在非IT公司的IT部门中工作,做一些开发的工作。在非IT公司中,IT部门注定是一个服务部门,或者说是后院部门,而且是最“后援”的后院部门,在这样的环境中,如何体现出程序员的价值呢?我们不是公司的直接利润来源,不能直接为公司创造价值,因此只能用一种间接地方式来体现我们的价值。既然我们服务的对象是业务人员
面试问题你的优势是什么或者说体现你的价值的地方在哪里
好几次面试面试官都问我,你的优势是什么? 有一次我回答说我有很强的并发编程能力,这个不是谁都可以做到的。 然后我列举了并发方面的知识,比如,java内容模型,指令重排序,happen-before,锁,volitile,cas,原子对象,并发容器,executors框架等 面试官居然没有深入提问,估计面试官也非技术出身,做管理做多了。 然后我列举了我在一些项目中写过的并发。技术人员最求的是
Java 的 安全性 体现在哪里?面试题
回答一:(路边社) Java最基本的安全性有三个。 第一个就是garbage collection,garbage collector会让你的程序不容易出现内存泄露。内存泄露是很危险的,在内存泄露的时候黑客可以黑你的电脑。 第二个就是exception,你有没有发现你想用呗null赋值的东西会出Exception?这个就是exception的好处。出现exception的时候
企业级架构的价值体现在哪里?
企业级架构 (Enterprise architecture,EA) 是对包括业务和技术在内的组织结构管理的实践。这是一个远远超出大多数企业级架构团队预算、能力和影响力的巨大任务。因此,EA 团队通常开发一个价值主张,但这只是企业架构理论的一小部分。下面是扩大企业架构价值的几种办法。小型或新的 EA 团队将会很好地从这个列表中交付一个单一的价值主张。信息技术治理将 IT 治理过程的策划和支持融进企