java中通过接口实现自定义事件,动态设定行为
有时候需要定义事件,自定义行为,或者动态设定行为,根据需要设置不同的行为,java中通过接口自定义事件,相当于C++中回调函数:
核心代码
假设类PhasePicker中showSelectedResult方法要设置动态行为,可以通过调用接口实现,代码如下:
public class PhasePicker{
//定义接口对象
OnSelectListener selListener;
//设置接口(回头调用该接口中函数)
public void setSelListener(OnSelectListener selListener) {
this.selListener = selListener;
}
private void showSelectedResult() {
//回调,动态行为,不同的实例行为不同
selListener.onSelect();
}
public interface OnSelectListener { //内部类的形式定义接口
void onSelect();
}
}
在实现时,产生PhasePicker 对象后,可以设置不同的行为
public class TrafficCtrlActivity extends Activity {
//该方法中定义PhasePicker 局部对象,并动态设定行为
private void showMoreCtrlCommand(){
//定义一个PhasePicker对象
final PhasePicker phasePicker = new PhasePicker();
//为其设置接口(实现接口即回调函数)
phasePicker.setSelListener(new OnSelectListener(){
@Override
public void onSelect() { // 实现内容即回调函数
// TODO 自动生成的方法存根
int sel = phasePicker.getCurrentItem();
if (sel < CommonData.SPECIAL_PHASE_COMMAND.length){
setManulCtrl(CommonData.SPECIAL_PHASE_COMMAND[sel][1]);
}
}
});
}
}