public class TaskDispatcher {
/**
* 任務處理器接口
*
* @author SYSTEM
*/
public static interface TaskHandler<T> {
public void handle(T task);
}
}
/**
* 任務處理器接口
*
* @author SYSTEM
*/
public static interface TaskHandler<T> {
public void handle(T task);
}
}
同時這個類裏面還有一個方法,參數中有該接口的對象:
/**
* 註冊一個任務處理器
*
* @param taskClass
* @param handler
*/
public <T extends AsyncTask> void registAction(Class<T> taskClass, TaskHandler<T> handler) {
if (log.isInfoEnabled()) {
log.info(" Regist " + handler + " for " + taskClass);
}
}
* 註冊一個任務處理器
*
* @param taskClass
* @param handler
*/
public <T extends AsyncTask> void registAction(Class<T> taskClass, TaskHandler<T> handler) {
if (log.isInfoEnabled()) {
log.info(" Regist " + handler + " for " + taskClass);
}
}
下面是調用這個方法的代碼,在這裏一方面將T實例化了(我自己描述的,僅供自己理解),另一方面將TaskHandler接口實現了:
{
//FlowBranchTask是一個類,它extends AsyncTask
taskDispatcher .registAction(FlowBranchTask.class,
new TaskHandler<FlowBranchTask>() {
public void handle(FlowBranchTask task) {
//實現該方法
} }
);
}
//FlowBranchTask是一個類,它extends AsyncTask
taskDispatcher .registAction(FlowBranchTask.class,
new TaskHandler<FlowBranchTask>() {
public void handle(FlowBranchTask task) {
//實現該方法
} }
);
}
附錄:內部接口和內部靜態接口:
class TestClass {
public interface I1 {
void Test1();
}
public static interface I2 {
void Test2();
}
};
class IImpl1 implements TestClass.I1 {
@Override
public void Test1() {
System.out.println("IImpl Test");
}
}
class IImpl2 implements TestClass.I2 {
@Override
public void Test2() {
System.out.println("IImp2 Test");
}
}
public class MyTest {
/**
* @param args
*/
public static void main(String[] args) {
TestClass.I1 i = new IImpl1();
i.Test1();
TestClass.I2 i2 = new IImpl2();
i2.Test2();
}
}
IImpl Test
IImp2 Test
IImp2 Test