Java闭包和回调
Java中的闭包与回调可以通过成员内部类来实现。
简单的来说闭包就是返回一个内部类对象,这个内部类对象包含了外部类对象的信息(因为一个内部类对象定依托于一个外部类对象)。
回调就是在闭包的基础上实现的,返回的内部类对象可以调用外部类中的方法。
例子:(不是很具有代表性)
public class Class {
private int classId;
private String className; public Class() {
} public Class(int classId, String className) {
this.classId = classId;
this.className = className;
} public int getClassId() {
return classId;
} public void setClassId(int classId) {
this.classId = classId;
} public String getClassName() {
return className;
} public void setClassName(String className) {
this.className = className;
} private class Student{
private int studentNumber;
private String monitor; public Student(int studentNumber, String monitor) {
this.studentNumber = studentNumber;
this.monitor = monitor;
} public int getStudentNumber() {
return studentNumber;
} public void setStudentNumber(int studentNumber) {
this.studentNumber = studentNumber;
} public String getMonitor() {
return monitor;
} public void setMonitor(String monitor) {
this.monitor = monitor;
} public String getClassInfo(){
String info = getClassId() + getClassName();
return info;
}
} public Student getStudent(){
return new Student(45,"张三");
} public static void main(String[] args) {
Class c1 = new Class(1,"软件工程2016-2班");
System.out.println(c1.getStudent().getClassInfo());
}
}
定义了Class类的对象后,可以通过其成员方法getStudent()获取一个内部类对象,取得其内部类对象后通过调用内部类对象的getClassInfo()方法获取班级信息,此方法中调用的是外部类中的方法从而实现回调。
Java闭包和回调的更多相关文章
- java 闭包与回调
闭包(closure)是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域. 内部类是面向对象的闭包,因为它不仅包含外围类对象(创建内部类的作用域)的信息,还自动拥有一个指向此外围类对象 ...
- Java内部类之间的闭包和回调详解
前言 闭包(closure)是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为它不仅包含外围类对象(创建内部类的作用域)的信息,还自 ...
- Java -- 内部类, 成员内部类,局部内部类,匿名内部类,闭包和回调, 枚举类
1. 成员内部类分为 静态内部类 和 非静态内部类. 非静态内部类 和 外部类的其他成员一样处理, 非静态内部类可以访问外部类的private的属性,而外部类不能访问非静态内部类的属性,需要实例非静 ...
- linkin大话面向对象--闭包和回调
先来理解2个概念:闭包和回调 什么是闭包? 闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建他的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为他不仅包含了外部类对象的信 ...
- Java 实现函数回调
在Java里没用委托(delegate)这方法,所以想要实现回调还是有些麻烦.(想了解C#如何实现?请查看:http://www.cnblogs.com/Martin_Q/p/4478494.html ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- (翻译)理解Java当中的回调机制
原文地址:http://cleancodedevelopment-qualityseal.blogspot.com/2012/10/understanding-callbacks-with-java. ...
- 编程基础——C/C++,Java,ObjC讨论回调模式
什么是回调? 因为它是从C开始进入编程世界.术语改只是口.叫习惯了.java里通常叫listener(监听器).C/C++里通常叫callback(回调),ObjC里面叫delegate(托付) 回调 ...
- Java中的回调函数学习
Java中的回调函数学习 博客分类: J2SE JavaJ# 一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类caller内将该接口设置 ...
随机推荐
- 如何用eclipse进行jar文件打包?
直接导出runnable jar,如下图所示: 然后选择导出runnable jar: 关于library handling部分的解释如下: (1)Extract required libraries ...
- vmware centos 桥接和NAT的IP配置
先初始化VM, 桥接模式: [root@out network-scripts]# cat ifcfg-ens33 TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesP ...
- stm32 cubemx hal dma uart参考例程,发送和接收
参考:https://blog.csdn.net/toopoo/article/details/80012317https://blog.csdn.net/morixinguan/article/de ...
- AJAX增删查
数据库 CREATE DATABASE crmweb; CREATE TABLE `customerstatus` ( `id` bigint(20) NOT NULL AUTO_INCREMENT ...
- 04 vue-cli 脚手架、webpack-simple模板项目生成、组件使用
alice https://www.cnblogs.com/alice-bj/p/9317504.html https://www.cnblogs.com/alice-bj/p/9318069.htm ...
- JVM(九),垃圾回收回收算法
九.垃圾回收回收算法 1.标记-清除(Mark and Sweep) 缺点是内存空间碎片化太严重 2.复制算法(Copying) (1)复制算法介绍 (2)复制算法优势 3.标记-整理算法(Compa ...
- 改变CTS测试中timeout时间
关键类: JarHostTest.java——>目录:%SOURCE_ROOT%/cts/tools/tradefed-host/src/com/android/cts/tradefed/tes ...
- TTTTTTTTTTTTTTTT #7 div1 A Breadth-First Search by Foxpower 在线LCA(倍增),模拟
A - Breadth-First Search by Foxpower Time Limit:2000MS Memory Limit:131072KB 64bit IO Format ...
- bootstrap列表组的使用
<ul class="list-group"> <li class="list-group-item"> <div class=& ...
- 简单的SSRF的学习
自己眼中的SSRF 成因 服务端允许了 可以向其他服务器请求获取一些数据 通过各种协议 http https file等(外网服务器所在的内网进行端口的扫描指纹的识别等) 一SSRF配合redis未授 ...