• 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()方法获取班级信息,此方法中调用的是外部类中的方法从而实现回调。

  • 相关阅读:
    Golang中用==判断是否相等
    reactnative项目运行失败的解决方法
    使用Redis实现分布式锁
    Zksnarks笔记: from programe to QAP
    [loj6696]复读机 加强版
    [loj3561]The short shank; Redemption
    [atARC135D]Add to Square
    [atARC134F]Flipping Coins
    [loj2157]避雷针
    [loj3653]抽奖机
  • 原文地址:https://www.cnblogs.com/chiweiming/p/11836495.html
Copyright © 2020-2023  润新知