java中的闭包和回调(二)
TeachableProgrammer类:
- package com.home;
 - public class TeachableProgrammer extends Programmer {
 - public TeachableProgrammer() {
 - super();
 - }
 - public TeachableProgrammer(String name) {
 - super(name);
 - }
 - // 教学工作任然由TeachableProgrammer定义
 - private void teach() {
 - System.out.println(getName() + "正在讲课");
 - }
 - private class Closure implements Teachable {
 - @Override
 - public void work() {
 - // 非静态内部类实现Teachable的work方法,作用仅仅是向客户类提供一个回调外部类的途径
 - teach();
 - }
 - }
 - // 返回一个非静态内部类的引用,允许外部类通过该引用来回调外部类的方法
 - public Teachable getCallbackReference() {
 - return new Closure();
 - }
 - }
 
TestClosure测试类:
- package com.home;
 - 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();
 - }
 - }
 
posted on 2017-09-06 21:34 1130136248 阅读(115) 评论(0) 收藏 举报
                    
                
                
            
        
浙公网安备 33010602011771号