java中的回调函数

学习过JavaScript的应该都知道,在js中一个方法可以当成一个参数传入另一个方法里面,然后在方法里面调用。这样的例子我们称为回调。在java的语法中不能把一个方法当成一个参数传递,而又很多地方又能用到,所以我在这讲一下

回调一般用于某些地方需要调用一个方法,但是方法的具体实现却不清楚。举个例子,一个桌面应用,当按钮被点击后系统会自动调用点击后应该执行的逻辑。但是没写之前根本不知道该执行什么逻辑,这里就需要用到回调了。下面我们来模拟一下这个过程。

模拟系统的Button类,表示一个按钮

public class Button {


    interface OnClickListener{
        public void click();
    }

    private OnClickListener onClickListener;

    //不知道click方法里面具体什么逻辑
    public void click(){
        if(onClickListener!=null){
            onClickListener.click();
        }
    }


    public void setOnClickListener(OnClickListener onClickListener){
        this.onClickListener = onClickListener;
    }
}

模拟计算机调用Button类的click方法

public class Page {

    public static void main(String[] args) {
        Button button = new Button();
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void click() {
                // TODO Auto-generated method stub

            }
        });

        button.click();
    }
}
在写之前不知道click方法里面具体要写什么,在Button类里面创建一个接口,在接口中定义这个方法。然后在类中声明一个接口类型的变量,并添加setter方法。然后在click方法中调用接口中的方法。
在Button方法被调用之前,我们要先为Button对象传入一个接口的实现,将未知的逻辑写在实现类的抽象方法中,然后就可以通过Button的click方法调用传递进去的实现类中的方法了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值