java总结
java闭包:
//Closure
类是一个内部类,它可以访问外部类TeacherProgramer
的成员变量name
。这确实是一种闭包的体现,因为它捕获了外部类的状态。
public class Programer { public String name; public Programer() { } public Programer(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void wrok() { System.out.println(name + "在干xxx"); } } public interface Teacher { void work(); } public class TeacherProgramer extends Programer { public TeacherProgramer() { } public TeacherProgramer(String name) { super(name); } public class Closure implements Teacher { public void work() { System.out.println(name + "hello word"); } } public Teacher getCallBack() { return new Closure(); } public static void main(String[]args){ TeacherProgramer teacherProgramer=new TeacherProgramer("法外狂徒张三"); teacherProgramer.getCallBack().work(); } }
//使用Lambda表达式的例子中,我们创建了一个实现了Teacher
接口的匿名函数,它捕获了teacherProgramer
对象的name
成员,并可以在调用work
方法时使用它。这就是Java 8及更高版本中更常见的闭包
public static void main(String[] args) { TeacherProgramer teacherProgramer = new TeacherProgramer("法外狂徒张三"); Teacher callBack = () -> System.out.println(teacherProgramer.name + "hello word"); callBack.work(); }
海纳百川 ,有容乃大