java回调接口怎么写( 二 )


其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法 。假定我们希望在某个事件发生时得到通知 。
【java回调接口怎么写】我们可以定义一个接口:InterestingEvent.javapackage org.zj.sample;public interface InterestingEvent { public void interestingEvent ();}这使得我们可以控制实现该接口的类的任何对象 。因此,我们不必关心任何外部类型信息 。
发出事件信号的类必须等待实现了 InterestingEvent 接口的对象,并在适当时候调用 interestingEvent() 方法 。EventNotifier.javapackage org.zj.sample;public class EventNotifier { private InterestingEvent ie; private boolean somethingHappened; public EventNotifier(InterestingEvent event) { ie = event; // 保存事件对象以备后用 。
somethingHappened = false; // 还没有要报告的事件 。} public void doWork() { if (somethingHappened) { // 检查设置的谓词 。
ie.interestingEvent();// 通过调用接口的这个方法发出事件信号 。} } public void setHappened(){//设置谓词 。
somethingHappened=true; }}在上例中,使用 somethingHappened 谓词来跟踪是否应触发事件 。希望接收事件通知的代码必须实现 InterestingEvent 接口,并将自身引用传递给事件通知程序 。
CallMe.javapackage org.zj.sample;public class CallMe implements InterestingEvent { @SuppressWarnings("unused") private EventNotifier en; public CallMe() { // 注意 EventNotifier (InterestingEvent event),应该传递一个接口类型 。// 而下面将this,即实现了InterestingEvent接口的CallMe实例传递给//EventNotifier 。
也就是所谓的接口回调了 。en = new EventNotifier(this); // 创建事件通知程序,并将自身引用传递给它 。
} // 为事件定义实际的处理程序 。
4.java 如何写回调方法public class Caller
{
public MyCallInterface mc;
public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}
public void call(){
this.mc.method();
}
}接口
public interface MyCallInterface
{
public void method();
}测试
public class B implements MyCallInterface
{
public void method()
{
System.out.println("回调");
}
public static void main(String args[])
{
Caller call = new Caller();
call.setCallfuc(new B());
call.call();
}
}
5.java什么叫接口的回调具体怎么解释可能不是特别好解释啊 。.
给你看看刚写的一段程序好了 。很容易理解的 。
interface Msg{
void showMessage();
}
class NbMsg implements Msg{
public void showMessage() {
System.out.println("123456");
}
}
class CahrMsg implements Msg{
public void showMessage() {
System.out.println("abcdef");
}
}
public class test {
private Msg msg;
public void show() {
System.out.println("处理一些东西");
msg.showMessage();
}
public void setMsg(Msg msg) {
this.msg = msg;
}
public static void main(String[] args) {
test a = new test();
a.setMsg(new CahrMsg());
a.show();
a.setMsg(new NbMsg());
a.show();
}
}结果是:
处理一些东西
abcdef
处理一些东西
123456
6.java 接口回调例子怎么像抽接口(1)先定义一个接口 1 package JieKouHuiDiao;2 //定义一个接口3 public interface JieKou {4 public void show();5 } (2)定义一个Boss类实现接口 1 package JieKouHuiDiao; 2 3 public class Boss implements JieKou{ 4 //定义一个老板实现接口 5 @Override 6 public void show() { 7 System.out.println("知道了"); 8 } 9 10 } (3)定义一个员工Employee类 1 package JieKouHuiDiao; 2 3 public class Employee { 4 //接口属性,方便后边注册 5 JieKou jiekou; 6 //注册一个接口属性,等需要调用的时候传入一个接口类型的参数,即本例中的Boss和Employee, 7 public Employee zhuce(JieKou jiekou,Employee e){ 8 this.jiekou=jiekou; 9 return e;10 }11 public void dosomething(){12 System.out.println("拼命做事,做完告诉老板");13 //接口回调,如果没有注册调用,接口中的抽象方法也不会影响dosomething14 jiekou.show();15 }16 17 } (4)测试类 package JieKouHuiDiao;public class Test {public static void main(String[] args) {Employee e=new Employee(); //需要调用的时候先注册,传入Boss类型对象和员工参数Employee e1=e.zhuce(new Boss(),e);e1.dosomething();}} 。