• Java学习笔记——回调函数


    转载:http://wangyang0311.iteye.com/blog/368031

    一般来说分为以下几步:

    1. 声明回调函数的统一接口interface A,包含方法callback();
    2. 在调用类caller内将该接口设置为私有成员private A XXX;
    3. 在caller内提供实现A接口的public方法(将外部该接口的实现类通过形参传入caller的XXX);
    4. caller的某个方法dosth()中会用到XXX.callback()方法;
    5. 在caller的实例中,先实现A接口,后调用dosth()方法;

    网上流行代码:

    //回调函数接口及方法
    public interface ICallback { 
      public void   func();  
    }
    //回调函数接口实现类
    public class ClassWithCallbackFunction implements ICallback{
      public ClassWithCallbackFunction() {
      }
      public void func(){
        System.out.println("cccccccccccccccccc");
      }
    }    
    public class Caller {
      private ICallback callback;  //私有接口成员      
      public void setCallback(ICallback callback) {
        this.callback = callback;  //接口成员的实现:从外部传入
      } 
      public void doCallback() {   //回调接口成员的方法
        callback.func();
      }
     }
    }
    public class MainClass {
      public MainClass() {
      }
      public static void main(String[] args) {
        Caller caller = new Caller();
        caller.setCallback(new ClassWithCallbackFunction() {
          public void func() {
            System.out.println("aaaaaaaaaa");
          }
        });
        caller.doCallback();      //实现回调
      }
    }  
    //现实中是把doCallback()方法放在setCallback里调用,以上是为了说明回调原理
    public class Caller {
      ICallback callback;
      public void doCallback() {
        callback.func();
      }
      public void setCallback(ICallback callback) {
        this.callback = callback;
        doCallback();
      }
    }

    java排序接口

    interface Compare {
       boolean lessThan(Object lhs, Object rhs);
       boolean lessThanOrEqual(Object lhs, Object rhs);
      }
    
    import java.util.*;
      
      public class SortVector extends Vector {
       private Compare compare; // 私有接口成员
       public SortVector(Compare comp) {
           compare = comp;
       }
       public void sort() {
           quickSort(0, size() - 1);
       }
       private void quickSort(int left, int right) {
           if(right > left) {
          Object o1 = elementAt(right);
          int i = left - 1;
          int j = right;
          while(true) {
               while(compare.lessThan(
                 elementAt(++i), o1))
                          ;
               while(j > 0)
                 if(compare.lessThanOrEqual(
                      elementAt(--j), o1))
                         break; 
                  if(i >= j) break;
                      swap(i, j);
           }
          swap(i , right);
          quickSort(left, i-1);
          quickSort(i+1, right);
           }
        }
        private void swap(int loc1, int loc2) {
           Object tmp = elementAt(loc1);
           setElementAt(elementAt(loc2), loc1);
           setElementAt(tmp, loc2);
       }
      } 
  • 相关阅读:
    如何使用C++构建一个极坐标系?
    归一化 [a] 到 [b] 区间
    ffmpeg 如何转换 rgb 图片到 yuv420p?如何使用 C 语言实现 rgb24 如何转换 yuv420p ?
    如何写一个通用的网络包?
    jenkins 配置参数为tag
    jmeter函数助手digest使用简介
    RD-T: 3540 Front Impact Bumper Model
    Listary软件的使用
    Adams各种材料的接触力参数
    Spring 使用构造方法注入方式
  • 原文地址:https://www.cnblogs.com/travellife/p/4053529.html
Copyright © 2020-2023  润新知