请看下列代码:( )
public class UserRequest {
public void request(ServletAction action) {
action.doService();
}
public static void main(String[] args) {
UserRequest user = new UserRequest();
user.request(new ServletAction() {
public void doService() {
System.out.println("处理请求");
}
});
}
}
如果上述代码采用回调模式编写,下列关于ServletAction的定义正确的是:
public static class ServletAction {
public void doService();
}public final class ServletAction {
public void doService();
}public class ServletAction {
public void doService();
}public interface ServletAction {
public void doService();
}在Java中,实现回调的方式有以下几种:
1. 接口回调:定义一个接口,在接口中声明一个或多个方法,在需要回调的地方调用该接口中的方法,然后由回调方实现该接口,完成回调操作。
2. 继承回调:通过继承关系,在父类中定义一个回调方法,子类继承父类并重写回调方法,在需要回调的地方调用子类的方法,完成回调操作。
3. 事件回调:在事件源上注册事件监听器,当事件触发时,事件源会通知已注册的监听器,监听器会执行相应的回调操作。
4. Lambda 表达式回调:在需要回调的地方使用 Lambda 表达式代替接口实现,简化了接口回调的实现过程。
5. 回调类回调:定义一个回调类,在需要回调的地方调用该类的方法,然后由回调方继承该类并重写回调方法,完成回调操作。
上述答案中,class都存在问题,方法都没有方法体,明显无法通过编译,故只有interface是正确的。
1. 接口回调:定义一个接口,在接口中声明一个或多个方法,在需要回调的地方调用该接口中的方法,然后由回调方实现该接口,完成回调操作。
2. 继承回调:通过继承关系,在父类中定义一个回调方法,子类继承父类并重写回调方法,在需要回调的地方调用子类的方法,完成回调操作。
3. 事件回调:在事件源上注册事件监听器,当事件触发时,事件源会通知已注册的监听器,监听器会执行相应的回调操作。
4. Lambda 表达式回调:在需要回调的地方使用 Lambda 表达式代替接口实现,简化了接口回调的实现过程。
5. 回调类回调:定义一个回调类,在需要回调的地方调用该类的方法,然后由回调方继承该类并重写回调方法,完成回调操作。
上述答案中,class都存在问题,方法都没有方法体,明显无法通过编译,故只有interface是正确的。