zoukankan      html  css  js  c++  java
  • Java回调理解 (step by step)

    在网上搜索了很多篇关于java回调函数的文章,自己也来试了一下写了这篇博客,可能有些地方理解不到位,烦请各位大大指正。

    计算机程序设计中。回调函数。或简称回调。是指通过函数參数传递到其他代码的,某一块可运行代码引用

    这一设计同意了底层代码调用在高层定义的子程序

            在Java里面,我们使用接口来实现回调。


    模拟一个场景:一个Girl给她男朋友Man打电话,然后Man给她回复:

    首先定义一个接口:

    package mine.callback2;
    
    public interface CallInterface {
    	void execute();
    }
    
    Girl:

    package mine.callback2;
    
    public class Girl {
    	public CallInterface ci;		//保存一个接口引用
    	public void setCallFun(CallInterface ci){
    		this.ci=ci;
    	}
    	public void call(){
    		ci.execute();		//回调实现CallInterface接口Man中的方法
    	}
    }
    Man:

    package mine.callback2;
    
    public class Man implements CallInterface {
    
    	@Override
    	public void execute() {
    		System.out.println("好的,女王大人");
    	}
    
    	public static void main(String[] args) {
    		Girl girl = new Girl();
    		girl.setCallFun(new Man());
    		girl.call();
    	}
    }
    接口不变,实现实现以上同样的功能:

    Girl:

    package mine.callback1;
    
    public class Girl {
    	public CallInterface ci;
    	public void CallFun(CallInterface ci){
    		System.out.println("陪我去逛街,好么?");
    		ci.execute();	//进行回调操作
    	}
    }
    Man:

    package mine.callback1;
    
    public class Man {
    
    	public static void answerA() {
    		System.out.println("好的,女王大人!");
    	}
    	public static void answerB(){
    		System.out.println("对不起,我这儿还有任务没完毕,以后有时间陪你噢.");
    	}
    	public static void main(String[] args) {
    		Girl girl = new Girl();
    		girl.CallFun(new CallInterface() {
    			
    			@Override
    			public void execute() {
    				//这里能够调用很多其它的回答
    				answerB();
    			}
    		});
    	}
    }
    假设思路不够清晰能够看以下这篇文章:http://kidult.iteye.com/blog/148982





  • 相关阅读:
    re模块
    Docker的使用
    flask中请求勾子
    flask中的蓝图实现模块化的应用
    HTTP中常见的各种状态码详解及解决方案
    git快速入门
    2st week blog 1
    web个人介绍
    CentOS7下shell脚本实现限定范围类的随机数
    CentOS7下shell脚本大小比较
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5129944.html
Copyright © 2011-2022 走看看