Java接口回调
来源:互联网 发布:excel数据库功能 编辑:程序博客网 时间:2024/06/08 10:35
转自:http://www.cnblogs.com/wangming007/p/5122701.html
举例:老板分派给员工做事,员工做完事情后需要给老板回复,老板对其做出反应。
上面是个比较经典的例子,下面用代码实现上述例子:
(1)先定义一个接口
public interface JieKou { public void show();}
(2)定义一个Boss类实现接口
public class Boss implements JieKou{//定义一个老板实现接口 @Override public void show() { System.out.println("知道了"); }}
(3)定义一个员工Employee类
public class Employee { //接口属性,方便后边注册 JieKou jiekou; //注册一个接口属性,等需要调用的时候传入一个接口类型的参数,即本例中的Boss和Employee public Employee zhuce(JieKou jiekou,Employee e){ this.jiekou=jiekou; return e; } public void dosomething(){ System.out.println("拼命做事,做完告诉老板"); //接口回调,如果没有注册调用,接口中的抽象方法也不会影响dosomething jiekou.show(); }}
(4)测试类
public class Test { public static void main(String[] args) { Employee e=new Employee(); //需要调用的时候先注册,传入Boss类型对象和员工参数 Employee e1=e.zhuce(new Boss(),e); e1.dosomething(); }}
通过上面的例子和代码应该有个比较初步的了解了,接口回调还有使用匿名内部类来实现,但是我觉得没有这种理解清晰,所以你懂得,记住这个,理解它就欧了
应用:在两个窗口中传值。Frame2窗口中填入的值,当点击按钮时,这个值显示在Frame1窗口中。
public class Frame1 extends Frame implements Frame2.MoneyListener{ private Label label=new Label("金额"); private Button btn=new Button("购买"); public Frame1(){ this.setSize(400,200); this.setLayout(new FlowLayout()); this.add(label); this.add(btn); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new Frame2().setMoneyListener(Frame1.this);//设置事件(监听者) } }); this.setVisible(true); } @Override public void setMoney(String money) { label.setText(money); } public static void main(String[] args){ new Frame1(); }}
/** * 接口回调: * 当一个对象需要给外部对象提供数据时,我们可以定义一个内部接口把数据通过接口传递出去, * 所有外部对象需要这个数据时,就实现这个接口,这样的好处是: * 传递数据的对象不直接依赖接收数据的对象(降低耦合性) */public class Frame2 extends Frame { private TextField textField=new TextField(20); private Button btn=new Button("付款"); public Frame2(){ this.setSize(400,200); this.setLayout(new FlowLayout()); this.add(textField); this.add(btn); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String money=textField.getText(); moneyListener.setMoney(money); } }); this.setVisible(true); } private MoneyListener moneyListener; public void setMoneyListener(MoneyListener moneyListener){ this.moneyListener=moneyListener; } public static interface MoneyListener{ public void setMoney(String money); }}
阅读全文
0 0
- Java:接口回调
- java 回调接口
- java接口回调
- Java 接口回调
- java接口回调
- Java接口回调
- java接口回调
- Java接口回调
- java接口回调
- Java接口回调
- Java接口回调
- java 接口回调
- Java 接口回调
- jAVA接口回调
- jAVA接口回调
- java-接口回调
- java-接口回调
- java接口回调
- 新手上路 jquery 选择器篇(二) 代码笔记
- iOS导航栏的隐藏(优化导航出现和隐藏的问题)
- 知识点总结之异或
- Linux3.4内核的基本配置和编译
- 树上的DP
- Java接口回调
- HTML6(六)
- Excuses, Excuses! Time Limit: 1000MSMemory Limit: 10000K Total Submissions: 4346Accepted: 1497 D
- 使用viewpager加fragment切换界面
- Fleury(弗洛莱)算法实现
- mysqldump备份时保持数据一致性
- 常用数据类型的范围
- 一位初学者的想法
- 未来10年,最夯的行业全在这里,你入对行了吗?