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

/**
 * 动物
 */
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通过匿名类来实现回调函数实例总结 主要介绍了Java通过匿名类来实现回调函数的例子,回调函数就是一种函数签名(若干个输入参数、一个输出参数)的规范,java虽不存在函数声明,但是java可以用接口来强制规范。具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。 立即下载

相关推荐

单细胞转录组数据分析全流程:从原始数据到细胞注释

本文详细介绍了单细胞转录组数据分析的全流程,从原始数据读取、环境搭建、数据质控与标准化,到降维聚类、细胞类型注释,以及高级质控与多样本整合。重点阐述了如何利用Seurat等工具进行数据处理,并通过标志基因比对与自动注释方法完成细胞身份鉴定,为研究者提供了一套清晰、可操作的分析指南。

coffee的博客 553

22java的回调&内部类

回调(callback,Hook) 回调(callback),又叫钩子(hook),模板方法模式。 在程序中某个位置设定一个钩子(hook),这个钩子具体怎么运行不确定,具体传递哪个对象就调用哪个对象的方法,实现代码的分离。实质上就是多态。 下面看程序实例: package oop.OopDemo.CallBack; public class MyCallback { pu...

发达的范的博客 245

【NIFI】实现HANA->ORACLE数据同步

实现 HANA->ORACLE数据同步。

weixin_43159039的博客 1507

java匿名内部类 返回值_用匿名内部类实现 Java 同步回调

在一个应用系统中,不论使用何种编程语言,模块之间要进行调用,仅存在三种方式:同步调用、异步调用、回调。本文就其中回调方式进行详细解读,并通过匿名内部类的手段,在最后实现一个同步回调的过程。一、回调的意义在学习回调之前,我们需要知道使用回调的原因,和回调的应用场景。不如先思考两个问题:栈底对栈顶通常是不可见的,但是栈顶有时需要直接调用栈底上级派下级做事,在此期间,下级可能需要通过上级获取高权限的协助...

weixin_39617502的博客 378

Redmi K30 5G刷 LineageOS17.1

前言 买手机前就观望了Xdr论坛,看Redmi K30 5G有LineageOS17.1的Rom并且还挺热,应该还不错,就入手了。晚上就刷机了。买了小米就是为了折腾,为发烧而生。 在开始前还请先安装adb工具,因为我自己是做Android开发的,自带adb,不会安装的可以百度“Android安装adb工具”。还有下载刷机文件:百度云 密码:2a0f 刷机的系统是刚买来的低版本,没有升级过Rom,如果高版本慎刷。 还有这个Rom是5G版本的,4G版本的不要刷。 建议没有刷过机器的最好不要尝试,变砖后果自负。

u010436867的博客 1万+

Zemax操作33--5倍激光扩束器

5倍扩束

lzy750750的博客 2931

Java内部类之闭包(closure)与回调(callback)

闭包(closure)是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。通过这个定义,可以看出内部类是面向对象的闭包,因为它不仅包含外围类对象(创建内部类的作用域)的信息,还自动拥有一个指向此外围类对象的引用,在此作用城内,内部类有权操作所有的成员,包括private成员。      Java最引人争议的问题之一就是,人们认为Java应该包含某种类似指针的机制,以允许回调(c

OOM 7934

特殊通信领域场景应用:基于Simulink的数字预失真(DPD)算法仿真建模示例

增益压缩:高功率输入时输出信号的增益下降。相位失真:输入信号的相位随功率变化而改变。带外干扰:非线性失真会引入额外的频谱分量,影响邻道信号。多项式模型:用多项式拟合功率放大器的非线性特性。查找表(LUT):通过离线训练生成预失真映射表。自适应算法:实时调整预失真参数以动态补偿失真。发送端:生成随机比特流并调制为射频信号。预失真模块:对输入信号进行预失真处理。功率放大器模块:模拟非线性失真。接收端:解调信号并评估误码率(BER)。

xiaoheshang_123的博客 273

内部类(inner class)和回调(callback)

内部类就是在一个类中定义另外一个类,内部类最大的用途实现方法的回调(CallBack),再进一步就是事件驱动。下面举一个方法的回调的例子: 首先创建一个接口ICallBack.java,内容如下: package zxm.test;   public interface ICallBack {     public abstract void execute(Object

FireFly的专栏 895

链接文件及功能安全:Hightec如何将Flash驱动放进RAM

Fls本身是无法操作自身的,犯冲突。Fls_WriteCmdCycles (预留300字节)与 Fls_EraseCmdCycles(预留200字节) 函数在执行之前将会Copy进RAM,Fls本身是不能操作Fls本身的,除非把最底层的驱动函数防止在RAM或者其他的Flash里面,假设Flash放置在PF0可以操作PF1。英飞凌的驱动有个规定写指令预留300字节,擦除指令预留200字节。

梦想技术家 2142

农业无人机:无人机图像处理_(8).遥感图像处理与分析

遥感图像处理与分析在农业无人机技术中具有重要作用,通过图像预处理、特征提取、分类与分割、目标检测等技术,可以实现对农田的精细管理、作物监测、病虫害预测等应用。本节详细介绍了这些技术的基本概念、常用方法和具体实现,希望对您在农业无人机图像处理方面的学习和应用有所帮助。

zhubeibei168的博客 1336

java实现callback

http://www.wuwenliang.net/2017/01/26/java%E5%AE%9E%E7%8E%B0callback/ 回调是一种双向调用模式,什么意思呢,就是说,被调用方在被调用时也会调用对方,这就叫回调。“If you call me, i will call back”。 Java语言中经常会使用到回调机制,或许只是平时没有注意到吧。比如Android开发中的OnCli...

乔志勇笔记 8805

PyQt5数据库开发3 6 QSqlQuery完整实操案例【图文详解】

PyQt5数据库开发3 6.1 QSqlQuery实操案例【多图详解】,本文有点长,主要每一个步骤都有对应的图文教程!!!

qq_53317005的博客 2963

Java中的回调学习

前段时间在学Hibernate的时候看了一下Spring中的对Hibernate的包装,其中的HibernateTemplate类中使用了execute(HibernateCallback action)来实际做各种Hibernate操作,其中HibernateCallback是一个用来回调的接口      public interface HibernateCallback{ Object do

NotePad 2431

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

final, static和nested class总结

来源:java视线    作者:沉默中前言: 本来是想总结一下inner class 的用法,但是却发现这几位颇为亲近。索性一起拉出来溜溜。 写作目的: 跟 static , final, inner class 搞好关系,以便将来遇见了,就像用if ,else一样,一清二楚。 文中的术语定义以java language spec为准。 先想想,要关注的是那些地方? 1。语法。 (code,

lala7754321的专栏 604

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

final, static和 nested class 总结

前言: 本来是想总结一下inner class 的用法,但是却发现这几位颇为亲近。索性一起拉出来溜溜。 写作目的: 跟 static , final, inner class 搞好关系,以便将来遇见了,就像用if ,else一样,一清二楚。 文中的术语定义以java language spec为准。 先想想,要关注的是那些地方? 1。语法。 (code, 我们吃饭的家伙...

Enjoying Techs! 174

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android WebSocket状态管理框架 - WebSocketGo

阅读本文需要 Integer.MAX_VALUE 分钟。笔者所在的公司主营业务是智能家居,笔者在公司负责的Android端App的开发。关于智能家居,估计现在百分之八九十的童鞋都听过,但真正了解或者使用过的估计就不占多数了。本文不谈行业前景,只谈技术。为了方便大家更加了解故事的背景,顺便科普一下智能家居,想直奔WebSocket主题的童鞋可以直接第二章节。智能家居,算是物联网的一个典型应用场景。什么是物联网呢,字面意思就是把众多物体连接起来组成一个网络,英文是Internet of things(IoT)。

Android23333的博客 1996

Java中实现CallBack功能

在很多场景,作为开发都会想到,在执行完毕一个任务的时候,能执行一个callback函数是多么好的事情。 现在模拟一下这个情景: 定义三个类。分别是主函数类。callback函数的接口类。业务处理类。在业务处理类中,处理完业务之后,执行一个callback函数。 package comz; public class Main { public static void main(String

imzoer的专栏 2万+

HibernateCallback-匿名内部类的应用

HibernateCallback是Spring提供Hibernate模板类HibernateTemplate的一个接口   名义上理解,这是一个回调接口,一般就会联想到匿名内部类。   举个简单的例子,根据用户ID查询出用户的信息   @SuppressWarnings("unchecked") public List&lt;User&gt; hibernateCallback...

Ben.Sin 235

java回调函数(采用匿名内部类)

接口 package com.test.back; public interface BackFunc { public void say(); }     主函数 package com.test.back; public class Main { /** * @param args */ public static v

jianghuihong2012的专栏 2299

JAVA回调机制(CallBack)详解

记录下来以后学习 转载自:https://www.cnblogs.com/heshuchao/p/5376298.html

ladysosoli的博客 435

Java中的内部类(回调)

一、内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便。 二、内部类可分为以下几种: 成员内部类 静态内部类 方法内部类 匿名内部类。 三、1,定义了成员内部类...

aamwirw716232的博客 234

java workthread_Java线程池原理,这一篇就够了

前言线程池(Thread Pool)是一种基于池化思想管理线程的工具。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。使用线程池可以带来诸多好处:①降低资源消耗:通过池化技术复用已创建的线程,减少线程创建和销毁的损耗。②提高响应速度:任务到达时,特定情况下无需再创建线程。③便于管理。简单实现public class ThreadPool {/...

weixin_31586247的博客 288

java 内部类 线程_java多线程基本概述(十四)——Thread内部类的几种写法

importjava.util.concurrent.TimeUnit;//命名匿名类-ThreadclassInnerThread1 {private int countDown = 5;privateInner inner;private class Inner extendsThread{Inner(String name){super(name);start();}@Overridepub...

weixin_34670892的博客 285

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 218
上一篇: firebug syntax error
下一篇: sql: case when, distinct, group by, group_concat
xiaoxinphp
博客等级 码龄18年 1粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值