匿名内部类仿闭包
来源:互联网 发布:强力删除软件下载 编辑:程序博客网 时间:2024/06/05 16:08
虽然java8已有闭包的概念,但是我们任然可以用非静态内部类去仿闭包,什么是闭包呢?
简单点说就是:子函数可以使用父函数中的局部变量,这种行为就叫做闭包
看下面情况:
interface Teachable{ void work();}public class Programmer{ private String name; public Programmer(){} public Programmer(String name){ this.name=name; } public void work(){ System.out.println("keydown......."); }}
现在我们需要同时继承和实现父类和接口
public class TeacherProgrammer extends Programmer implements Programmer{ public void work{ System.out.prinln("Teachable...work"); }}
显然上面的子类只有包含接口实现的work方法,但是实际需要我们既有接口的work方法,又有父类的work方法,这该怎么办呢?
这个时候我们可以用内部类类来仿闭包
public class TeacherProgrammer extends Programmer{ public TeacherProgrammer(){} public TeacherProgrammer(String name){ super(name); } //teach()方法由TeacherProgrammer定义 private void teach(){ //......... } //非静态内部类 private class Closure implements Teachable{ public void work(){ teach(); } } public Teachable getCallbackReference(){ return new Closure(); }}public class TeachableProgrammerTest{ public static void main(String []args){ TeacherProgrammer tp=new TeacherProgrammer("a"); //直接调用TeacherProgrammer类从Programmer继承得到的work方法 tp.work(); //表面上是调用Closure的work方法,实际上是回调TeacherProgrammer的teach()方法 tp.getCallbackReference().work(); }}
0 0
- 匿名内部类仿闭包
- 内部类、匿名内部类
- 内部类、匿名内部类
- 内部类,匿名内部类
- 内部类(匿名内部类)
- 内部类 ---匿名内部类
- 内部类,匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类,内部类,匿名内部类
- 匿名内部类,回调...
- 关于匿名内部类
- 匿名内部类
- JAVA匿名内部类
- 返回匿名内部类
- java 匿名内部类
- 匿名类内部类
- 数据分析是模型驱动还是数据驱动?
- 第十六周项目1-数组的排序
- 在JTable中加载进度条及进行操作
- c++ 01
- 设置JTable某个单元格的背景颜色和前景颜色
- 匿名内部类仿闭包
- Looper.prepare(),Looper.loop()和在子线程中显示Toast
- cocos2dx --- Action介绍 (一、二) (动作顺序、动作组合效果)
- 兼容IE10 chrome的读取xml方法总结
- JTable操作 关于单元格颜色设置
- 如何解决WebkitBrowser使用出错“Failed to initialize activation context”
- 在你的应用程序添加启动画面
- 简单工厂模式
- LinkedHashMap和HashMap的比较使用