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

Java 回调(callback) 内部类(innerclass)

    博客分类:
  • java
阅读更多
/**
 * 动物
 */
public class Animal {
    private String name;
    private int leg;//腿数量
    private int weight;//重量

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getLeg() {
        return leg;
    }

    public void setLeg(int leg) {
        this.leg = leg;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }
}

 

import java.util.List;

/**
 * 动物园
 */
public class Zoo {
    private String name;
    private List<Animal> animalList;

    /**
     * 统计动物的总重量
     * @return
     */
    public int calculateWeight(){
        return calculateTotal(new CallBack(){
            public int getAmount(Animal animal) {
                return animal.getWeight();
            }
        });
    }

    /**
     * 统计腿的数量
     * @return
     */
    public int calculateLegs(){
        return calculateTotal(new CallBack(){
            public int getAmount(Animal animal) {
                return animal.getLeg();
            }
        });
    }

    /**
     * 为了calculateTotal回调,写一个回调的接口,
     * javascrip相对就会方便许多,不需要定义这个接口
     */
    interface CallBack {
        int getAmount(Animal animal);
    }

    /**
     * 将统计的算法等装在此
     * @param callBack
     * @return
     */
    private int calculateTotal(CallBack callBack){
        int total = 0;
        for (Animal animal : animalList) {
            total = total + callBack.getAmount(animal);
        }
        return total;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Animal> getAnimalList() {
        return animalList;
    }

    public void setAnimalList(List<Animal> animalList) {
        this.animalList = animalList;
    }
}
 

 

假设动物园里面有一群动物,我们要做一个统计动物的重量功能,如calculateWeight,还要做一个统计动物腿的数量的方法,其统计算法都一样,对于这种情况,就可以写一个callback,来完成。为了方便,所以直接写一个内部类接口,等java有了闭包功能,就不必多定义这个接口了:)

分享到:
评论

相关推荐

    给初学者的java回调demo

    在Java中,回调通常通过接口或者抽象类来实现。这篇"给初学者的Java回调demo"将帮助你深入理解这个概念。 首先,让我们定义什么是回调。在编程中,回调是一种函数或方法的引用,它作为参数传递给其他函数。当这个...

    java CallBack(回调函数)

    Java回调函数,也称为Callback机制,是面向对象编程中一种重要的设计模式,它允许一个对象在其他对象执行特定操作后得到通知或者进行后续处理。在Java中,回调通常通过接口来实现,因为Java不支持函数指针。让我们...

    java回调函数

    回调函数在Java中还有其他的应用形式,比如在异步编程中,我们可能会使用Future和Callback接口。例如,当我们使用ExecutorService执行一个任务并希望在任务完成后得到结果时,可以传递一个Callback对象,当任务完成...

    Android java 回调例子

    相信很多初学android java的童鞋们都不太懂回调的意思,我当时也是这样的什么这个跳到那个然后又从那个调用这个的方法。。。弄得晕头转向的,今天我突然顿悟,于是写了一个回调例子与大家分享,由于手头分不多了,...

    java自定义回调函数

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

    C++中回调函数(CallBack)的用法分析

    本文实例分析了C++中回调函数(CallBack)的用法。分享给大家供大家参考。具体分析如下: 如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。 其错误是普通的C++成员函数都隐含了一个传递...

    匿名内部类实现接口回调

    这个简单的例子展示了如何利用匿名内部类在Java中实现接口回调。在实际项目中,接口回调的应用非常广泛,例如在Android开发中,事件监听、网络请求、UI更新等场景都会用到这种机制。通过合理运用接口回调和匿名内部...

    JNI 回调函数 Callback

    回调函数Callback是JNI中一个重要的概念,它使得Java层能够调用C/C++的函数,反之亦然。 **JNI基础** 1. **JNI接口定义**:在Java代码中,通过`native`关键字声明本地方法。这些方法没有具体实现,而是通过JNI接口...

    Java中回调方法使用范例

    例如,一个名为`Caller`的类可能有一个`callWithCallback(Callback callback)`方法,用于执行回调: ```java public class Caller { public void callWithCallback(Callback callback) { // 执行一些操作... ...

    java接口回调

    通过以上代码,我们可以看到,Java接口回调使得`MyThread`可以通知`Test`任务已经完成,而无需直接依赖`Test`的内部状态。这种设计模式提高了代码的可复用性和解耦性,使得组件之间的交互更加灵活。 总结一下,Java...

    Java中的回调使用

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

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

    本实例将聚焦于Java版本的实现,通过深入理解回调模式,我们可以更好地构建稳定、高效的微信企业号应用。 首先,我们要明白微信企业号回调的基本原理。当微信企业号接收到特定事件(如用户关注、取消关注、消息发送...

    Android 通过自定义Dialog来理解接口回调callback

    本文将深入探讨如何通过自定义Dialog来理解接口回调(callback)机制,这在进行Android应用开发时是非常重要的一项技能。 首先,让我们了解什么是自定义Dialog。在Android系统中,Dialog是一种半透明的窗口,用于...

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

    - `JniCallBackDemo`可能是项目中的一个示例工程,包含了一个Java类,其中定义了需要被回调的接口,以及一个本地库,实现线程创建和回调逻辑。 - Java类中,`native`方法声明和`System.loadLibrary`加载本地库,...

    Java回调机制

    在Java中最简单的回调示例中,我们可以创建一个事件接口,如`EventCallback`: ```java public interface EventCallback { void onEventHappened(); } ``` 然后,我们创建一个类实现这个接口,并提供具体的事件...

    CallBack_DEMO 回调

    在本示例"CallBack_DEMO"中,我们可能正在探讨如何在Java或其他编程语言中实现回调机制。回调通常与异步编程相关,尤其是在处理I/O操作、网络请求或者时间事件时,它能让程序在执行完成后继续执行后续操作,而不是...

    java中回调函数的简单实现

    最后,我们创建一个类`MyCallback`,实现`Callback`接口并定义回调行为: ```java public class MyCallback implements Callback { @Override public void onCallback() { System.out.println("任务完成后的回调...

    Qt使用回调函数方(callback)

    可能包含了具体的信号槽连接示例,而`mainwindow.ui`则是Qt Designer生成的用户界面文件,`callback.pro`和`callback.pro.user`则是项目配置文件,它们共同构成了一个关于Qt回调函数使用的实例项目。

Global site tag (gtag.js) - Google Analytics