标签:打印 简单 总结 span 接口 pre 直接 err generate
前几天学了接口回调,现在总结一下接口回调是什么原理:假设我们现在需要实现一个通知的功能,需求是A在执行循环,当循环到5的时候, 通知B。以前我们是直接把B类的实例传到A对象中,A类代码如下:
package com.itheima.demo; public class A { // 我是A类,我要接口回调 void printlt(B b) { for (int i = 1; i <=10; i++) { System.out.println("1988年的第几"+i+"次"); if (i==5) { b.println2(); } } } }
B类代码:
package com.itheima.demo; public class B { public void println2() { // TODO Auto-generated method stub System.out.println("2018年到了5"); } }
主方法:
package com.itheima.demo; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub A a=new A(); B b= new B(); a.printlt(b); //调用A的打印方法 } }
这样就会有一个缺陷。万一这个A类是早在1988年写好了的,1988年的程序员怎么知道你要传什么对象,要实现什么功能呢?因此出现了接口回调。
我们先定义一个接口:
package com.itheima.demo; public interface ListenerB { void println2(); //定义一个打印的方法 }
使用接口回调的A类代码:
package com.itheima.demo; public class A { // 我是A类,我要接口回调 public void printlt(ListenerB B) { //这里就变成了接口的实例 for (int i = 1; i <=10; i++) { System.out.println("1988年的第几"+i+"次"); if (i==5) { B.println2(); //这里是接口定义好了的方法,B类只要实现接口的方法就可以了 } } } }
使用接口回调的B类代码:
package com.itheima.demo; public class B implements ListenerB { //我们只要实现这个接口就可以了 @Override public void println2() { // TODO Auto-generated method stub System.out.println("2018年到了5"); } }
主方法:
package com.itheima.demo; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub A a=new A(); ListenerB b=new B(); a.printlt(b); } }
这样我们就写好了一个简单的接口回调。
标签:打印 简单 总结 span 接口 pre 直接 err generate
原文地址:https://www.cnblogs.com/ahJava/p/9655271.html