Java回调机制的实现方式
http://blog.chinaunix.net/uid-26727976-id-3130486.html
一、回调机制在java中应用非常广泛,下面用一个demo简单的实现回调机制
1.Time.java
package com.test;
public class Time {
private OnTimeChange mOnTimeChange;
private int time;
/*接口*/
public interface OnTimeChange{
public void timChange();
}
/*监听事件*/
public void setOnTimeChangeListener(OnTimeChange change){
mOnTimeChange=change;
}
public void setTime(int value){
time=value;
mOnTimeChange.timChange();
}
}
2.Caller.java
public class Caller extends Activity implements OnTimeChange {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Time time=new Time();
time.setOnTimeChangeListener(this);//监听事件
time.setTime(1);
/*匿名内部类实现接口*/
time.setOnTimeChangeListener(new OnTimeChange() {
@Override
public void timChange() {
// TODO Auto-generated method stub
Log.i("debug", "time has changed");
}
});
}
@Override
public void timChange() {
// TODO Auto-generated method stub
Log.i("debug", "Time has changed");
}
}
二、
public class Test{
public static void main(String[] args){
FooBar foo=new FooBar();
foo.setCallBack(new ICallBack(){
public void postExec(){System.out.println("method executed.");}
});
}
}
aaaaaa
public interface ICallBack(){
void postExec();
}
bbbbbb
public class FooBar..{
private ICallBack callBack;
public void setCallBack(ICallBack callBack){
this.callBack=callBack;
}
public void doSth(){
....
callBack.postExec();
}
..
}
JAVA的CALLBACK通过接口来实现。
例:
1.class A,class B
2.class A实现接口ICallBack
3.class B拥有一个参数为ICallBack接口类型的函数setCallBack(ICallBack o)
4.class A运行时调用class B中setCallBack函数,以自身传入参数
5.class B已取得A,就可以随时回调A所实现的ICallBack接口中的方法
http://blog.chinaunix.net/uid-26727976-id-3130486.html
一、回调机制在java中应用非常广泛,下面用一个demo简单的实现回调机制
1.Time.java
package com.test;
public class Time {
private OnTimeChange mOnTimeChange;
private int time;
/*接口*/
public interface OnTimeChange{
public void timChange();
}
/*监听事件*/
public void setOnTimeChangeListener(OnTimeChange change){
mOnTimeChange=change;
}
public void setTime(int value){
time=value;
mOnTimeChange.timChange();
}
}
2.Caller.java
public class Caller extends Activity implements OnTimeChange {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Time time=new Time();
time.setOnTimeChangeListener(this);//监听事件
time.setTime(1);
/*匿名内部类实现接口*/
time.setOnTimeChangeListener(new OnTimeChange() {
@Override
public void timChange() {
// TODO Auto-generated method stub
Log.i("debug", "time has changed");
}
});
}
@Override
public void timChange() {
// TODO Auto-generated method stub
Log.i("debug", "Time has changed");
}
}
二、
public class Test{
public static void main(String[] args){
FooBar foo=new FooBar();
foo.setCallBack(new ICallBack(){
public void postExec(){System.out.println("method executed.");}
});
}
}
aaaaaa
public interface ICallBack(){
void postExec();
}
bbbbbb
public class FooBar..{
private ICallBack callBack;
public void setCallBack(ICallBack callBack){
this.callBack=callBack;
}
public void doSth(){
....
callBack.postExec();
}
..
}
JAVA的CALLBACK通过接口来实现。
例:
1.class A,class B
2.class A实现接口ICallBack
3.class B拥有一个参数为ICallBack接口类型的函数setCallBack(ICallBack o)
4.class A运行时调用class B中setCallBack函数,以自身传入参数
5.class B已取得A,就可以随时回调A所实现的ICallBack接口中的方法