首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于java回调,该如何解决

2012-03-09 
关于java回调csdn上看到一帖子讲java回调机制,有代码如下:Java codepublic interface ICallback {public v

关于java回调
csdn上看到一帖子讲java回调机制,有代码如下:

Java code
public interface ICallback {  public void func();}   public class ClassWithCallbackFunction implements ICallback{  public ClassWithCallbackFunction() {  }  public void func(){  System.out.println("cccccccccccccccccc");  }}   public class Caller {  ICallback callback;  public void doCallback() {  callback.func();  }  public void setCallback(ICallback callback) {  this.callback = callback;  }}   public class MainClass {  public MainClass() {  }  public static void main(String[] args) {  Caller caller = new Caller();  caller.setCallback(new ClassWithCallbackFunction() {  public void func() {  System.out.println("aaaaaaaaaa");  }  });  caller.doCallback(); //?????????????  why not print  }} 

为什么MainClass的caller.doCallback()没有打印语句,感觉要嘛打印aaaaaaaa,要嘛打印cccccc,但不打印,why?

[解决办法]
Java code
//我的机器能打印aaaaaaaaaa,你的机器神马牌子的,高级不愿意打印它们interface ICallback {    public void func();}class ClassWithCallbackFunction implements ICallback {    public ClassWithCallbackFunction() {    }    public void func() {    System.out.println("cccccccccccccccccc");//实现接口方法    }}class Caller {    ICallback callback;    public void doCallback() {    callback.func();    }    public void setCallback(ICallback callback) {    this.callback = callback;    }}public class MainClass {    public MainClass() {    }    public static void main(String[] args) {    Caller caller = new Caller();    caller.setCallback(new ClassWithCallbackFunction() {        public void func() {//这里已经重写了func方法,你不重写这个它,它就会打印"cccccccccccccccccc"        System.out.println("aaaaaaaaaa");        }    });    caller.doCallback(); // ????????????? why not print    }}/*output:aaaaaaaaaa*/
[解决办法]
eclipse 中 调用 debug 来调试
既可知道整个代码的执行步骤 即程序的调用过程
也能知道程序运行结果的由来
[解决办法]
这里的回调也就是函数的手动调用吧.
[解决办法]
lz,你再试试,确实打印了,是aaaaaaaa!

热点排行