java中的闭包
闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域的信息
public  class Programmer {
    private String name;
    public Programmer() {
        super();
    }
    public Programmer(String name) {
        super();
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void work() {
        System.out.println(name + "正在编程");
    }
}
public interface Teachable {
    public void work();
}
public class TeachableProgrammer extends Programmer {
    public TeachableProgrammer() {
        super();
    }
    public TeachableProgrammer(String name) {
        super(name);
    }
    // 教学工作任然由TeachableProgrammer定义
    private void teach(String content) {
        System.out.println(getName() + "正在教授"+content);
    }
    private class Closure implements Teachable {
        String content = "";
        Closure (String content){
            this.content = content;
        }
        @Override
        public void work() {
            // 非静态内部类实现Teachable的work方法,作用仅仅是向客户类提供一个回调外部类的途径
            teach(content);
        }
    }
    // 返回一个非静态内部类的引用,允许外部类通过该引用来回调外部类的方法
    public Teachable getCallbackReference(String content) {
        return new Closure(content);
    }
}
public class TestClosure {
    public static void main(String[] args) {
        TeachableProgrammer tp = new TeachableProgrammer("李刚");// 该示例来源于李刚老师的疯狂讲义
        // 直接调用TeachableProgrammer从Programmer类继承下来的work方法
        tp.work();
        // 表明上看是调用的Closure的work方法,实际上是通过通过work方法回调TeachableProgrammer的teach方法
        tp.getCallbackReference("数学").work();
    }
}
java中的闭包的更多相关文章
- java中的闭包和回调
		闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域的信息.JAVA并不能显式地支持闭包,但是在JAVA中,闭包可以通过“接口+内部类”来实现,因为对于非静态内部类而言,它不仅记录了其外 ... 
- java 中的闭包
		原文地址:https://sylvanassun.github.io/2017/07/30/2017-07-30-JavaClosure/ 1.自由变量: function Add(y) { retu ... 
- java程序员理解js中的闭包
		1.闭包概念: 就是函数内部通过某种方式访问一个函数内部的局部变量 再次理解: 闭包产生原因: 1.内部函数引用了外部函数的变量 作用:延长局部变量的生命周期 让函数外部可以调用到函数内部的数据 利用 ... 
- java中的23中设计模式(转)
		设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ... 
- java中的23中设计模式(转载的,有时间一定要熟读)
		设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ... 
- js代码中的闭包
		作为一个后台开发人员了解前端非常重要,尤其是深处学校实验室做项目时前端把写好的代码直接给你,然后你在修改的时候.我经常做的就是修改前端的代码的HTML和后台交互的部分以及js的ajax部分,之后修改之 ... 
- javascript中的闭包,超简单论述,保证小学生必懂
		js中的闭包已经有很多论断了,大家伙有没有听懂了,先引用一片比较高端 的 ”汤姆大叔“ 深入理解JavaScript系列(16):闭包(Closures) 好了,为了引起大家的兴趣,先来小诗一首 v ... 
- [译] Closures in Lua - Lua中的闭包
		原文:(PDF) . 摘要 一等(first-class)函数是一种非常强大的语言结构,并且是函数式语言的基础特性.少数过程式语言由于其基于栈的实现,也支持一等函数.本文讨论了Lua 5.x用于实现一 ... 
- [转] Java内部类之闭包(closure)与回调(callback)
		闭包(closure)是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为它 不仅包含外围类对象(创建内部类的作用域)的信息,还自动拥 ... 
随机推荐
- 【设计模式】不同设计模式体现IOC控制反转
			使用过Spring的开发者应该都对IOC控制反转功能有所了解,最开始学习时应该都知道使用依赖注入来实现IOC的功能,本文来介绍使用IOC控制反转思想的几种设计模式. 依赖注入来实现IOC 注入依赖是I ... 
- JUnit4注解
			今天学习了下,mybatis中开发dao的方法,用到了JUnit4进行单元测试, 将JUnit4中的注解总结了下,供大家参考学习: JUnit 4 开始使用 Java 5 中的注解(annotatio ... 
- css 表单标签两端对齐
			来自:http://demo.doyoe.com/css3/justify/justify-form.htm 侵删 <!DOCTYPE html> <html lang=" ... 
- 小tips:JS操作数组的slice()与splice()方法
			slice(start, end) slice()方法返回从参数指定位置开始到当前数组末尾的所有项.如果有两个参数,该方法返回起始和结束位置之间的项,但不包括结束位置的项. var colors = ... 
- NDK中使用pthread多线程中自己写的一个BUG
			在使用pthread进行NDK中的多线程开发时,自己写了一个BUG, void *darkGrayThread(void *args) { ThreadParam *param = (ThreadPa ... 
- Loadrunner 脚本开发-利用web_submit_data函数实现POST请求
			脚本开发-利用web_submit_data函数实现POST请求 by:授客 QQ:1033553122 概述 web_link()和web_url()函数都是页面访问型函数,实现HTTP请求中的 ... 
- 深入理解Java虚拟机01--概述
			本课题是对<深入理解Java虚拟机>周志明 第二版的总结 具体可以参考:https://pan.baidu.com/s/1v_mPp--XV4u4rCBMkbR37A 第1版 可以忽略 ... 
- Android Studio多渠道打包(一)
			1. 多渠道的概念 APP发布到不同的应用平台,监测用户是从哪个平台安装的. 2. 为什么要多渠道打包 统计用户安装APP来源 批量修改生成的apk文件名 可更改包名 生成不同应用名称或图标 3.多渠 ... 
- 巧用 即刻搜索事件 input propertychange 监听输入框字数
			实时监听输入框的字数,大于200时,不再输入. 即时搜索: propertychange(ie)和input事件(常用) input是标准的浏览器事件,一般应用于input元素,当input的valu ... 
- AlexNet卷积神经网络【前向反馈】
			1.代码实现 # -*- coding: utf-8 -*- """ Created on Wed Nov 14 17:13:05 2018 @author: zhen ... 
