zoukankan      html  css  js  c++  java
  • Java 回调函数的理解

          以下是我对java回调函数的理解,希望对各位有帮助。

      简而言之,假设有两个类A与B,还有一个回调接口C(有一个c方法)。其中A类持有一个B类对象作为属性和拥有一个a方法,并实现了接口C,所以A类中就有a、c两个方法。B类中就仅有b方法。当外部程序调用A对象中的方法a时,a就会调用B类对象的b方法,b方法最后又调回A类中的c方法,此过程就是一个回调。

      上面的解析有点抽象,下面我就用例子演示一下。

      首先定义一个接口(即上面解析中的C角色):

      Java代码

      package com.peng.callback;

      public interface OnEndPlay {

      public void endPlay(String program);//c方法

      }

      然后定义一个MediaPlayerService(即A角色)对象实现OnEndPlay(C角色):

      Java代码

      package com.peng.callback;

      public class MediaPlayerService implements OnEndPlay{

      private MediaPlayer player=new MediaPlayer();

      public void doPlay(String program)//a方法

      {

      player.play(this,program);

      }

      @Override

      public void endPlay(String program) //c方法

      {

      System.out.println(program+":节目播放结束!");

      }

      }

      在定义一个MediaPlayer (B角色):

      Java代码 收藏代码

      package com.peng.callback;

      public class MediaPlayer {

      public void play(OnEndPlay callback,String program)//b方法

      {

      int count=0;

      while (count<10)

      {

      System.out.println(program+":正在播放。。。。");

      count++;

      try

      {

      Thread.sleep(1000);

      } catch (InterruptedException e)

      {

      e.printStackTrace();

      }

      }

      callback.endPlay(program);

      }

      }

      最后用一个测视类测试:

      Java代码

      package com.peng.callback;

      public class Test {

      public static void main(String[] args)

      {

      final MediaPlayerService playService=new MediaPlayerService();

      final String program="湖南卫视";

      new Thread(new Runnable() {

      @Override

      public void run()

      {

      playService.doPlay(program);

      }

      }).start();

      }

      }

      运行结果为:

      湖南卫视:正在播放。。。。

      湖南卫视:正在播放。。。。

      湖南卫视:正在播放。。。。

      湖南卫视:正在播放。。。。

      湖南卫视:正在播放。。。。

      湖南卫视:正在播放。。。。

      湖南卫视:正在播放。。。。

      湖南卫视:正在播放。。。。

      湖南卫视:正在播放。。。。

      湖南卫视:正在播放。。。。

      湖南卫视:节目播放结束!

      疯狂软件学习中心是一所Java人才的专业机构,它最核心的价值在于能让应届大学毕业生与企业无缝对接,课程设计与企业需求高度结合,使其在进入企业后能立即上手。

      学真正Java技术,当然选疯狂软件Java培训机构,打造国内高级Java人才

      疯狂软件Java培训优势

      1. Java是世界第一大编程语言,市场占有率达20%。

      2.广州最专业Java培训机构,多年教学经验。

      3.学员技术牛就业率最好,就业薪资都在5000以上。

      4.部分老师还是Java技术系列书籍的作者,由这样的Java书籍原创作者讲课可想而知课程条理清晰、讲解清楚,知识面广、深度足够!

      5.疯狂软件Java培训课程以项目实战带动教学,上课打破传统课堂模式,以实训项目贯穿教学,带领学生一起做企业真实项目。

      疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。

  • 相关阅读:
    新·刷题记录【争取认真来做】
    Codeforces 235D Graph Game
    Codeforces 235B Let's Play Osu!
    Codeforces 235E Number Challenge
    Codeforces 235C Cyclical Quest
    AHOI2017游记
    bzoj4826: [Hnoi2017]影魔
    大数分解模板
    A new start
    0712
  • 原文地址:https://www.cnblogs.com/gojava/p/3559136.html
Copyright © 2011-2022 走看看