インタフェースのコールバックを振り返る:Interface CallBackの2つの簡単な思考
8794 ワード
今日また1人の高校の学友がいて、Javaに接触したばかりの友达が私にいくつかの问题を闻いて、それからインタフェースのコールバックを闻いて、私は彼に说明して、ついでに少し时间があって、手当たり次第に书いて、简単な小さいケースが必要なみんなを助けることができることを望みます.
問題の説明:
1-書き方インタフェース単独書き:
// , / ( ) , 。
public interface CallBack {
public void solve(String result);
}
//
public class Wang implements CallBack {
Li li;
public Wang(Li li) {
this.li = li;
}
public void askQuestion(final int num) {
new Thread(new Runnable() {
@Override
public void run() {
li.executeMessage(Wang.this, num);
}
}).start();
// ,
goPlay();
}
private void goPlay() {
System.out.println(" , , ...");
}
@Override
public void solve(String result) {
System.out.println(" : " + result);
}
}
public class Li {
public void executeMessage(CallBack callBack, int num) {
System.out.println(" : "+num);
//
int count = 0;
for (int i = 0; i < num; i++) {
if (i > 0 && i % 2 == 0) {
count++;
}
}
String reslut = " "+count;
// ,
callBack.solve(reslut);
}
}
public class Test {
public static void main(String[] args) {
Wang wang = new Wang(new Li());
wang.askQuestion(1000);
}
}
印刷結果:
, , ...
: 1000
: 499
書き方2-インタフェースはクラスに書きます.
//
public class Wang implements CallBack {
Li li;
public Wang(Li li) {
this.li = li;
}
public void askQuestion(final int num) {
//
new Thread(new Runnable() {
@Override
public void run() {
// , 。
li.setCallBack(new Li.CallBack() {
@Override
public void solve(String result) {
System.out.println(" : " + result);
}
});
// 。
li.executeMessage(num);
}
}).start();
// ,
goPlay();
}
private void goPlay() {
System.out.println(" , , ...");
}
public class Li {
//public void executeMessage(CallBack callBack, int num), , 。
public void executeMessage(int num) {
System.out.println(" : " + num);
//
int count = 0;
for (int i = 0; i < num; i++) {
if (i > 0 && i % 2 == 0) {
count++;
}
}
String reslut = " " + count;
// : ,
callBack.solve(reslut);
}
//
public interface CallBack {
void solve(String result);
}
private CallBack callBack;
public void setCallBack(CallBack callBack) {
this.callBack = callBack;
}
}
public class Test {
public static void main(String[] args) {
Wang wang = new Wang(new Li());
wang.askQuestion(1000);
}
}
出力結果:
, , ...
: 1000
: 499