Java中回調(diào)機(jī)制的使用

1,場(chǎng)景:模擬教師給學(xué)生布置作業(yè),學(xué)生完成后將結(jié)果回告教師
2,初始化學(xué)生類:

public class Student {

    /*
    回調(diào)實(shí)際上是調(diào)用方Teacher將自身的實(shí)例teacher(Teacher.this)傳遞給被調(diào)用方Student對(duì)應(yīng)的方法
    doHomeWork(WcsCallBack wcsCallBack, String task)內(nèi)。
     */
    public void doHomeWork(WcsCallBack wcsCallBack, String task) throws InterruptedException {

        System.out.println("接到老師的作業(yè):"+task);
        System.out.println("學(xué)生正在做作業(yè)");
        Thread.sleep(1000);
        System.out.println("作業(yè)已經(jīng)完成");
        String result="【Today's homeWorker is so easy】";

        wcsCallBack.complete("notify Teacher the result of Today's homeWorker"+result);

    }

}

3,設(shè)置回調(diào)方法。(此方法被Student中使用)

public interface WcsCallBack {

    public void complete(String result);
}

4,初始化Teacher類

public class Teacher implements WcsCallBack {

    private Student student;

    public Teacher(Student student) {
        this.student = student;
    }


    /*
    下發(fā)布置作業(yè)
     */
    public void commandMethod(String homeWorker ){
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("即將布置作業(yè)...");
                try {
                    /*
                    doHomeWork(WcsCallBack wcsCallBack, String task)。
                    Teacher類實(shí)現(xiàn)了WcsCallBack接口,所以可以作為WcsCallBack實(shí)例傳入。
                    /*
                    回調(diào)實(shí)際上是調(diào)用方Teacher將自身的實(shí)例teacher(Teacher.this)傳遞給被調(diào)用方Student對(duì)應(yīng)的方法
                    doHomeWork(WcsCallBack wcsCallBack, String task)內(nèi)。
                     */

                    student.doHomeWork(Teacher.this,homeWorker);

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }
        }).start();

    }



    @Override
    public void complete(String result) {
        System.out.println("收到學(xué)生對(duì)于今天作業(yè)的反饋:"+result);
    }

5,寫測(cè)試類:

public class TestClass {

    public static void main(String[] args){

        Student stu = new Student();
        Teacher teacher = new Teacher(stu);
        System.out.println("進(jìn)入測(cè)試程序");
        String homeWorker="【萬(wàn)歷十五年朗讀第三章】";
        teacher.commandMethod(homeWorker);

    }
}

6,結(jié)果輸出:

進(jìn)入測(cè)試程序
即將布置作業(yè)...
接到老師的作業(yè):【萬(wàn)歷十五年朗讀第三章】
學(xué)生正在做作業(yè)
作業(yè)已經(jīng)完成
收到學(xué)生對(duì)于今天作業(yè)的反饋:notify Teacher the result of Today's homeWorker【Today's homeWorker is so easy】
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容