介面回撥傳值的兩個例項
阿新 • • 發佈:2019-01-22
第一個. 有介面實現類的情況
建立一個類 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);
}
}