书上只是提了一下,哪位能详细讲解一下。

解决方案 »

  1.   

    个人理解。其实和windows平台中的com里的差不多,A调用B对象,B声明一个事件方法,然后在A里实现,这样当B运行时,就可以回凋A中实现的方法了!
      

  2.   

    public class A{
       public void aaa(){
         B b = new B();
         b.action(this);
       }
       public void bbb(){}
    }
    public class B{
       public void action(A a){
          a.bbb();
       }
    }
    这就是回调。
      

  3.   

    楼上兄弟讲的都好懂,但下面的例子我还是看不大明白,哪位能讲解一下在哪里回调:
    /*查看文件目录*/
    import java.io.*;public class test6{
    public static void main(String[] args){
    String[] list;
    File path=new File(".");
    try{
    if(args.length==0)
      list=path.list();
     else
      list=path.list(new dirfilter(args[0]));
     for(int i=0;i<list.length;i++)
     System.out.println(list[i]);


    }
    catch(Exception e){
    e.printStackTrace();
    }
    }
    }class dirfilter implements FilenameFilter{
    String atn;
    dirfilter(String atn){
    this.atn=atn;
    }
    public boolean accept(File dir,String name){
    String f=new File(name).getName();
    return f.indexOf(atn)!=-1;
    }

    }书上讲解如下:之所以要创建dirfilter类,背后的全部原
    因就是把accept()方法提供给list()方法,使list()能够“回调”accept() ,从而判断应将哪些文件名包
    括到列表中。LIST()到底是怎样调用accept()方法的?
      

  4.   

    回调,是callback函数。即是由编程人员编写,但是是由系统调用的函数。编程人员一般不调用此函数,因为那些通常是系统的操作
      

  5.   

    应该是在这句
    list=path.list(new dirfilter(args[0]));list()方法的参数如果是应该是FilenameFilter,这时候把dirfilter 作为参数传进去,就可以调用dirfilter 实现的accept方法
      

  6.   

    但是没有看到accept方法被调用啊?
      

  7.   

    accept()被调用应该是因implements FilenameFilter吧
    我改了一下这个程序:但是我还是不懂什么叫回调  那位大哥指导一下?
    public class callback{
        public callback() {
            try {
                jbInit();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }    public static void main(String[] args){
                    String[] list;
                    File path=new File(".");
                    try{
                            if(args.length==0)
                              list=path.list();
                             else{
                                 list=path.list(new dirfilter(args[0]));
                                 System.out.println("args[0] is "+args[0]);
                             }
                             for(int i=0;i<list.length;i++)
                             System.out.println(list[i]);
                    }
                    catch(Exception e){
                            e.printStackTrace();
                    }
            }    private void jbInit() throws Exception {
        }
    }class dirfilter implements FilenameFilter{
            String atn;
            dirfilter(String atn){
                    this.atn=atn;
                    System.out.println("......dirfilter() is running");
            }
            public boolean accept(File dir,String name){
                    String f=new File(name).getName();
                    System.out.println("......accept() is running;f is "+f);
                    return f.indexOf(atn)!=-1;        }
            
            /*******************
             书上讲解如下:之所以要创建dirfilter类,背后的全部原因就是把accept()方法提供给list()方法,使list()能够“回调”accept() ,
             从而判断应将哪些文件名包括到列表中。         
             */
            
    }
    运行情况:
    ......dirfilter() is running......accept() is running;f is bak......accept() is running;f is callback.jpx......accept() is running;f is callback.jpx.local......accept() is running;f is classes......accept() is running;f is doc......accept() is running;f is srcargs[0] is src1
      

  8.   

    以上讲到的好像都是基于多态实现的回调。有没有其他的实现方式呢?java里的事件监听是怎么实现的呢?