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

posted @ 2019-11-11 16:47  一转身已万水千山  阅读(673)  评论(0编辑  收藏  举报