} 运行情况: ......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
public void aaa(){
B b = new B();
b.action(this);
}
public void bbb(){}
}
public class B{
public void action(A a){
a.bbb();
}
}
这就是回调。
/*查看文件目录*/
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()方法的?
list=path.list(new dirfilter(args[0]));list()方法的参数如果是应该是FilenameFilter,这时候把dirfilter 作为参数传进去,就可以调用dirfilter 实现的accept方法
我改了一下这个程序:但是我还是不懂什么叫回调 那位大哥指导一下?
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