Java回调机制

什么是回调?
维基百科是这样解释的:回调是一段可执行的代码通过参数传递给别一段代码,以期望在一个合适的时间调用这个参数(可执行的代码)。
回调的作用

  • 避免重复代码
  • 在你需要更多的通用功能的地方更好地实现抽象(可处理各种类型的对象和变量)
  • 增强代码的可维护性
  • 增强代码的可读性
  • 有更多定制的功能

以“八仙过海”彰显回调之精髓

package org.zpli.java8.callback;

/**
 * @Description: 接口(技术)
 * @author: zpli
 * @Date: 2020/3/19 15:32
 */
public interface Magic {

    void doMagic();

}
package org.zpli.java8.callback;

/**
 * @Description: 神仙类
 * @author: zpli
 * @Date: 2020/3/19 15:35
 */
public class Immortal {

    private String name;

    public Immortal(String name){
        this.name = name;
    }

    public void crossingSea(Magic magic){
        System.out.print(name);
        magic.doMagic();
        System.out.println("过海。。。");
    }
}    
package org.zpli.java8.callback;

/**
 * @Description: 函数调用类
 * @author: zpli
 * @Date: 2020/3/19 15:38
 */
public class MainCls {

    public static void main(String[] args) {
        Immortal tieGuaili = new Immortal("铁拐李");
        // 不使用lambda表达式
        // 参数化函数
        tieGuaili.crossingSea(new Magic() {
            @Override
            public void doMagic() {
                System.out.print("骑着葫芦");
            }
        });
        // 使用lambda表达式
        // tieGuaili.crossingSea(() -> System.out.print("骑着葫芦"));

        Immortal zhangGuoLao  = new Immortal("张果老");
        zhangGuoLao.crossingSea(() -> System.out.print("骑着毛驴"));

        Immortal heXianGu  = new Immortal("何仙姑");
        heXianGu.crossingSea(() -> System.out.print("踩着荷叶"));

        Immortal hanXiangzi  = new Immortal("韩湘子");
        hanXiangzi.crossingSea(() -> System.out.print("用笛子变成浮木"));

        Immortal liDongBin  = new Immortal("吕洞宾");
        liDongBin.crossingSea(() -> System.out.print("踩着宝剑"));

        Immortal lanCaiHe  = new Immortal("蓝采和");
        lanCaiHe.crossingSea(() -> System.out.print("坐着花篮"));

        Immortal hanZhongLi  = new Immortal("汉钟离");
        hanZhongLi.crossingSea(() -> System.out.print("使用芭蕉扇"));

        Immortal caoGuoJiu  = new Immortal("曹国舅");
        caoGuoJiu.crossingSea(() -> System.out.print("使用阴阳玉板"));
    }
}

结果如下:
铁拐李骑着葫芦过海。。。
张果老骑着毛驴过海。。。
何仙姑踩着荷叶过海。。。
韩湘子用笛子变成浮木过海。。。
吕洞宾踩着宝剑过海。。。
蓝采和坐着花篮过海。。。
汉钟离使用芭蕉扇过海。。。
曹国舅使用阴阳玉板过海。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值