1. 程式人生 > >介面回撥傳值的兩個例項

介面回撥傳值的兩個例項

第一個. 有介面實現類的情況

建立一個類 A:

public class A {
    private A a;
    private static int i = 0;
    A() {
        a = this;
    }

    public void start() {
        new Thread(new Runnable() {
            public void run() {
                    while (true) { 
                        i = i + 1;
                        b.methodB(a, i);
                    } 
                }
            }).start();
        }

    private
B b; public void setBListener(B b2) { b = b2; } }

建立一個介面 B:

public interface B {
    void methodB(A a, int i);
}

最後建立一個實現 B 介面的類 C:

public class C implements B {
    private static int x;
    private static C c;

    @Override
    public void methodB(A a, int i) {
        x = i;
        System.out.println(x);
    }

    public
static void main(String args[]) { A a = new A(); c = new C(); a.start(); a.setBListner(c); } }

第二個. 使用匿名內部類的情況

建立一個類 A:

public class A {
    int x = 1;
    int getData(B b) {
        b.get_in(x);
        return 1;
    }
}

建立一個介面 B:

public interface B {
    void
get_in(int i); }

建立一個類 C:

public class C {
    public static void main(String args[]){
        int y = new A().getData(new B(){
            @Override
            public void get_in(int z) {
                System.out.println(z);
            }
        });
    System.out.println(y);
    }
}