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