`
wangyang_09
  • 浏览: 96381 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java中的回调函数学习

    博客分类:
  • J2SE
阅读更多
一般来说分为以下几步:
  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排序的compare接口

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);
   }
  } 

分享到:
评论

相关推荐

    java中回调函数的简单实现

    在Java编程中,回调函数是一种设计模式,它允许我们在代码执行过程中插入自定义的行为,特别是在异步编程或者事件处理中非常常见。回调函数的核心思想是将一个函数作为参数传递给另一个函数,然后在适当的时候由被...

    android回调函数

    在Android开发中,回调函数是一种常见的编程模式,用于在特定事件发生时通知并允许其他对象进行相应的处理。回调函数在Android中的应用广泛,比如在异步任务完成、用户界面更新或者网络请求完成时,都会用到回调。...

    Android回调函数demo

    在Android开发中,回调函数(Callback Function)是一种重要的设计模式,它允许代码在特定事件发生时执行自定义操作。...在学习和实践中,理解并熟练运用回调函数对于提升Android开发技能至关重要。

    java中的回调函数.docx

    ### Java中的回调函数详解 #### 一、回调函数的基本概念 在Java中,回调函数是一种特殊的函数,它允许用户在程序执行过程中返回控制权给调用方,从而实现某些特定的功能或逻辑。这种机制通常通过接口(interface)...

    IO 目录列表器 回调函数 Thinking in java 4

    总的来说,"IO 目录列表器 回调函数 Thinking in java 4"这个主题涵盖了Java I/O操作,特别是目录遍历,以及如何利用回调函数(如Lambda表达式)来处理目录中的每个文件。这样的技术在实际项目中非常常见,比如日志...

    DWR 取得回调函数返回值案列

    ### DWR取得回调函数返回值案例详解 #### 一、DWR简介 DWR (Direct Web Remoting) 是一种简化Ajax应用开发的技术框架。...通过以上内容的学习,相信读者对DWR中如何获取回调函数返回值有了更深入的理解。

    JNI回调函数,java和c方法相互调用

    4. **回调函数原理**:在JNI中,回调机制通常是通过在本地代码中保存对Java对象的引用,然后在适当的时候通过这个引用调用Java的方法。这需要理解`jobject`、`jclass`、`jmethodID`等数据类型,以及如何使用`...

    singleton、回调函数、sizeof等小结.docx

    在C++中,回调函数通常与C语言的函数指针密切相关,但在现代C++中,可以使用函数对象(Functors)、Lambda表达式或者std::function来实现更安全、更灵活的回调机制,避免了C风格回调函数的一些限制和潜在问题。...

    Java简单的回调(interface)demo

    回调函数的概念源自函数式编程,但在面向对象编程中也得到了广泛的应用。在Java中,通常通过接口来实现回调机制,这正是“Java简单的回调(interface)demo”所展示的。下面我们将深入探讨这个主题。 首先,理解回...

    JavaScript中的回调函数实例讲解

    对于熟悉Java等其他编程语言的开发者而言,回调函数的这一概念与Java中的接口回调相似,这将有助于他们更快地理解并运用JavaScript的回调机制。在Java中,回调通常是通过接口实现的,而JavaScript中则使用函数指针来...

    Java-Java函数式编程教程

    Lambda表达式可以简化回调函数的实现,使代码更易读。 2. **函数式接口**: 为了使用Lambda表达式,必须有一个合适的函数式接口。函数式接口是指只有一个抽象方法的接口,如Runnable、Callable和Comparator。Java ...

    详细介绍Android中回调函数机制

    在Android开发中,回调函数机制是一个至关重要的概念,它允许我们定义行为并在特定事件发生时自动执行这些行为。...通过以上讲解,你应该对Android中的回调函数有了更深入的理解,希望这对你的学习有所帮助。

    oss文件上传(带回调)

    【标题】"OSS文件上传(带回调)"指的是在Spring Boot应用中集成对象存储服务(Object Storage Service,简称OSS),并实现文件上传功能,同时具备回调机制,即在文件上传完成后,系统会自动执行预设的回调函数,通常...

    Android-抛弃使用高风险的WebViewaddJavascriptInterface方法通过对js层调用函数及回调函数的包装

    为了安全地实现JavaScript与Java的交互,我们需要对调用函数和回调函数进行包装,以确保只有预期的接口可以被访问。 描述中提到的功能包括: 1. **支持异步回调**:在JavaScript和Java之间传递复杂操作时,异步回...

    java函数语言大全

    这在回调函数和高阶函数中非常常见。 **6. 变量作用域:** 在函数内部定义的变量只有在该函数内部可见,称为局部变量。全局变量在整个程序中都可见,但使用时需谨慎,避免引发意外的副作用。 **7. 函数重载:** ...

    JNI层创建的线程中回调java方法

    - **线程生命周期管理**:在本地线程中回调Java方法后,记得使用`JavaVM->DetachCurrentThread()`来分离线程,否则可能导致JVM泄漏。只有主线程(由Java方法启动的线程)是自动附着的,其他线程需要手动附着和分离。...

    java函数使用查询包

    这对于编写简洁的回调函数和处理集合非常方便。 6. **方法引用(Method References)**:与Lambda表达式关联,Java 8也引入了方法引用,它可以直接引用类的静态方法或对象的实例方法,而无需写出完整的Lambda表达式...

    简单回调demo

    在多层嵌套的回调函数中,代码可读性和维护性可能会急剧下降,这被称为“回调地狱”。为了解决这个问题,可以采用以下策略: - 使用Promise和async/await:Promise允许我们将异步操作转换为类似同步的代码,而...

    使用一个小例子解释Java回调/代理机制的项目压缩包

    当我们创建一个类并实现这个接口,我们实际上定义了一个回调函数。然后,我们可以将这个实现类的实例传递给事件生成器,当事件发生时,事件生成器会调用我们的`onEvent()`方法,这就是回调的执行过程。 代理机制则...

    java用JNA调用dll实例,包含各种参数调用

    5. **函数指针和回调函数**:JNA支持定义回调函数,即Java中的接口可以映射到DLL中的函数指针。通过`com.sun.jna.FunctionMapper`,你可以指定一个函数名到Java方法的映射规则。 6. **字符串**:JNA支持NUL终止的C...

Global site tag (gtag.js) - Google Analytics