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

  • 相关阅读:
    acm课程练习2--1005
    acm课程练习2--1003
    [ZJOI2010]网络扩容
    [ZJOI2009]狼和羊的故事
    [FJOI2007]轮状病毒
    [NOIP2016提高组]换教室
    [NOIP2016提高组]愤怒的小鸟
    [NOIP2009提高组]最优贸易
    [洛谷P2245]星际导航
    [NOIP2013提高组]货车运输
  • 原文地址:https://www.cnblogs.com/chiweiming/p/11836495.html
Copyright © 2011-2022 走看看