`

java中回调的实现

    博客分类:
  • Java
阅读更多
//定义一个接口
interface Incrementable{
    void increment();
}

//一个简单的接口实现类
class Callee1 implements Incrementable{
    private int i = 0;
    public void increment(){
        i++;
        System.out.println (i);
    }
   
   
}

class MyIncrement{
    void increment(){
        System.out.println ("other operator");
    }
   
    static void f(MyIncrement mi)
    {
        mi.increment();   
           
    }
}


//Callee2 想改变 MyIncrement中 increment()方法的行为。
// 主要是因为Callee2有一个完全不同的incr ()方法
// 要解决的问题是在调用increment 方法的时候 改而调用 incr方法
//父类有一个increment 不能因为字类的用途而覆盖这个方法
//所以字类重新写了一个 incr 方法。

class Callee2 extends MyIncrement{
    private int i = 0;
    //一个用来替代incrment方法的行为的方法。
    private void incr(){
        i++;
        System.out.println (i);   
    }
    //内部类实现Incrementable接口
    private class Closure implements Incrementable {
        public void increment(){
            incr();
        }
    }
   
    //获得一个回调的引用
    Incrementable getCallBackReference(){
        return new Closure();
    }
   
   
}

class Caller{
    private Incrementable callbackReferences;
   
    //它只需要一个接口。
    Caller (Incrementable chb){
        callbackReferences = chb;
    }
   
    void go(){
        callbackReferences.increment();
    }
   
   
}

class Callbacks{
    public static void main(String[] args){
        Callee1 c1 = new Callee1();
        Callee2 c2 = new Callee2();
       
        MyIncrement.f(c2);
       
       
       
        Caller caller1 = new Caller(c1);
        //客户端完全不知道 caller2 中的incrment方法的实现。
        //事实上Callee2完全改变了incrment方法的行为(调用了另一个方法)
        Caller caller2 = new Caller(c2.getCallBackReference());
       
        caller1.go();
        caller1.go();
       
        caller2.go();
        caller2.go();
    }
}

//回调的价值在于它的灵活性--在运行时决定调用哪个方法。
分享到:
评论

相关推荐

    java 回调函数 实现

    在Java编程中,回调函数是一种设计模式,它允许一个对象在另一个对象...在给定的示例中,`Button.java`和`OnButtonClickListener.java`展示了如何通过接口来实现回调,而`CallMeTest.java`则可能是测试回调功能的代码。

    java中回调函数的简单实现

    标题"java中回调函数的简单实现"主要探讨的是如何在Java中应用回调函数的概念,以便让程序更加灵活和可扩展。下面我们将深入探讨回调函数的基本原理、应用场景以及如何在Java中实现回调。 首先,回调函数的主要优点...

    java实现企业微信回调配置案例

    3. **Java回调处理类** 创建一个Java类,用于处理来自企业微信的回调请求。这个类通常需要实现HTTP服务端点,例如使用Spring Boot的`@RestController`注解。在接收到POST请求后,解析请求体,通常是JSON格式的数据...

    Java面试如何用Java实现一个回调函数

    Java面试如何用Java实现一个回调函数

    给初学者的java回调demo

    Java回调是一种设计模式,它是当一个对象调用另一个对象的方法时,被调用对象通过某种方式在完成操作后反过来调用调用者的方法,这种机制就是回调。在Java中,回调通常通过接口或者抽象类来实现。这篇"给初学者的...

    Java中回调方法使用范例

    在Java编程中,回调方法是一种设计模式,它允许我们在代码执行过程中插入自定义的行为,特别是在异步编程或者事件处理中非常常见。...进一步研究这些文件将有助于加深对Java回调方法的理解和实践。

    Java利用接口实现回调

    在Java支持方法指针之前,Java接口不能提供一种实现回调的好方法。如果您习惯于传递在事件驱动编程模型中调用的函数指针,则您会喜欢本技巧。  熟悉MS-Windows和X Window System事件驱动编程模型的开发人员,习惯...

    Java中的回调使用

    在Java中,回调并不是语言内置的特性,但可以通过接口、匿名内部类或Java 8引入的Lambda表达式来实现。 首先,我们来看如何使用接口实现回调。假设有一个`Calculator`接口,它定义了一个`calculateDone`方法: ```...

    java自定义回调函数

    在Java中,我们可以使用接口或者匿名内部类来实现回调机制。 首先,我们需要理解什么是回调。回调是一种编程技术,当一个函数执行完毕后,它会调用另一个预先指定的函数,这个被调用的函数就是回调函数。在Java中,...

    微信企业号回调模式实例(Java版)

    在Java中实现微信企业号回调,首先需要设置好微信企业号的开发者配置,包括填写正确的AppID、AppSecret以及回调URL。这些信息通常在微信企业号的管理后台进行设置。然后,我们需要创建一个可以监听并处理POST请求的...

    java接口回调

    在Java编程中,接口回调是一种常见的设计模式,用于实现异步操作或者事件处理。当我们谈论“Java接口回调”时,核心思想是:一个类通过实现特定接口,将自身的某个方法暴露给其他对象调用,当特定事件发生或任务完成...

    java回调函数

    Java回调函数是编程中一种非常重要的设计模式,它允许一个对象在另一个对象完成特定操作后进行通知或执行相应的处理。这种机制使得代码更加灵活,解耦了调用者和被调用者的依赖关系,通常用于事件处理、异步编程、...

    [iOS]Objective-C利用协议实现回调函数(类似java的回调函数)

    在标题提及的“[iOS]Objective-C利用协议实现回调函数(类似java的回调函数)”中,我们主要讨论的是Objective-C如何通过协议(Protocol)来实现类似于Java中的回调函数功能。这种机制对于异步编程、事件处理以及...

    Android JNI多线程编程回调JAVA函数

    本话题将深入探讨如何在Android中使用JNI进行多线程编程,并实现native方法对Java函数的回调。 1. **JNI基础知识**: - JNI是Java平台的一部分,为Java应用程序提供了与本地代码交互的能力。开发者可以通过JNI在...

    java和android中的回调

    1. **接口与回调**:在Java和Android中,回调通常通过接口实现。一个类实现接口,并定义接口中声明的方法,当需要回调时,调用者通过接口实例来调用这些方法。例如,`OnClickListener`接口用于处理视图的点击事件。 ...

    Java回调.rar

    总的来说,Java回调是程序设计中的一个重要概念,它涉及到了事件处理、异步编程以及函数式编程等多个方面。理解并熟练运用回调机制,能够帮助开发者编写出更加灵活、可维护的代码。在实际开发中,合理地利用回调能够...

    C++JNI多线程回调java

    在"C++使用JNI多线程回调java代码例子"中,虽然具体实现没有提供,但我们可以想象一个典型流程: 1. **初始化JNIEnv**:在C++中,我们需要获取到`JNIEnv`指针,这是JNI的核心,提供了调用Java方法和访问Java对象的...

    C回调java几种方法

    为了实现更灵活的回调,可以在Java中定义一个接口,让C代码通过实现该接口的本地方法来触发Java回调。在C代码中,可以创建一个Java对象并设置其为接口的实现,然后通过Java对象调用接口方法。 5. **线程本地存储...

    Java多线程实现回调函数.txt

    Java多线程实现 自定义 的 回调函数. 手写 完成,亲测 完成,可以 直接运行,Demo ,具有一定参考价值,供大家阅读 下载,谢谢

    JNI调用及回调就(Java&C) 源码

    在这个场景中,JNI被用来实现Java程序对摄像头的控制,以及处理来自C代码的回调。 首先,我们需要理解JNI的工作原理。JNI提供了一套接口,使得Java代码可以生成本地方法调用,这些方法可以是用C或C++编写的。在Java...

Global site tag (gtag.js) - Google Analytics