哪个类实现了回调监听接口中的方法,就回去调用哪个类中的对应的方法。
    再次理解回调的含义 - 图1
    主函数中调用HttpUtilsget方法,第二个参数传入View的实例,那么当get方法内部执行到listener调用方法的地方的时候,就会去回调View中的方法。
    这就是回调方法
    例子:

    1. //回调接口
    2. public interface Listener {
    3. void onSucceed(String info);
    4. void onFailed(String info);
    5. }
    1. //模仿网络访问类
    2. public class HttpUtils {
    3. //参数是url和对应的监听器
    4. public void get(String url, Listener listener){
    5. //开启延时的一个线程模拟网络访问
    6. new Thread(new Runnable() {
    7. @Override
    8. public void run() {
    9. try {
    10. Thread.sleep(1500);
    11. } catch (InterruptedException e) {
    12. e.printStackTrace();
    13. }
    14. //对网络访问结果进行判断并接着调用相应的监听器的方法
    15. if (url==null){
    16. listener.onFailed("error");
    17. }else {
    18. listener.onSucceed("anyInfo");
    19. }
    20. }
    21. }).start();
    22. }
    23. }
    1. //实现了监听器的类,那么如果调用HttpUtils中的get()方
    2. //法,并且将View的实例作为监听器传入时,当网络访问得
    3. //到结果时,就会回头调用View类中的如下两个方法。
    4. public class View implements Listener{
    5. @Override
    6. public void onSucceed(String info) {
    7. System.out.print(info);
    8. }
    9. @Override
    10. public void onFailed(String info) {
    11. System.out.print(info);
    12. }
    13. }

    入口main函数

    1. public class Main {
    2. public static void main(String[] args) throws Exception {
    3. View view = new View();
    4. new HttpUtils().get("anyUrl", view);
    5. }
    6. }

    点击run : 延时一秒后打印:anyInfo