java - 为什么接口可以实现回调?
大家讲道理
大家讲道理 2017-04-18 10:05:37
0
2
367

don‘t call me ,i will call you,代码怎么就知道什么时机调用呢?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(2)
黄舟

Rangka kerja umum mempunyai antara muka untuk menetapkan panggilan balik/cangkuk Apabila peristiwa berlaku dalam rangka kerja, panggilan balik yang ditetapkan oleh pengguna akan dipanggil
Sebagai contoh, berikut ialah contoh mudah:

public class CallbackTest {
    public static void main(String args[]) throws Exception {
        // 1. 实例化一个回调逻辑.
        Callback userCallback = new Callback() {
            @Override
            public void call(String message) {
                System.out.println("Call from framework, message: " + message);
            }
        };

        // 2. 初始化一个假象的框架, 并设置用户的回调接口.
        SomeFramework framework = new SomeFramework(userCallback);

        // 3. 启动框架
        framework.start();

        Thread.sleep(5000);
    }

    interface Callback {
        void call(String message);
    }

    static class SomeFramework implements Runnable {
        Callback userCallback;

        public SomeFramework(Callback userCallback) {
            this.userCallback = userCallback;
        }

        public void start() {
            new Thread(this).start();
        }

        @Override
        public void run() {
            try {
                Thread.sleep(3000);
                somethingHappened();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        // 4. 当框架内的状态变化时或者是发生了某个事件时, 就调用用户设置的回调接口.
        private void somethingHappened() {
            userCallback.call("Something happended!");
        }
    }
}

Sebenarnya, ia sedikit seperti mod dipacu peristiwa atau pemerhati Rangka kerja menyimpan antara muka panggil balik pengguna, dan antara muka ini berfungsi sebagai jambatan untuk komunikasi antara rangka kerja dan kod pengguna apabila rangka kerja mengesan kejadian itu , ia menggunakan antara muka panggil balik ini untuk memberitahu pengguna tentang kod.

阿神

Janji...janji...saya cadangkan anda lihat mod pemerhati

Contohnya, jika anda menambahkan pendengar tindakan pada butang

button.addActionListener(new ActionListener() {
    public actionPerformed(ActionEvent e) {
        // do something
    }
});

Adalah dipersetujui bahawa pendengar tindakan akan dicetuskan apabila butang ditekan, jadi apabila anda menambahnya, anda sudah tahu bila ia akan dipanggil. Walaupun anda tidak mengetahui titik masa tertentu, anda tahu bahawa jika sesuatu berlaku, ia akan dipanggil.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan