public interface ProcessFile { public void process()throws ProcessException;
}
该方法在具体实现时有可能有N个实现方法,每个方法都是处理一批文件当然,在处理文件时会遇到一些情况,需要让外部函数知道其处理的结果考虑到封装性,不想用return,也不想用重载,想用类似于回调函数,让用户输入一个回调的interface,来获得该方法在具体实现中的返回值

解决方案 »

  1.   

    实现时增加一个接收结果的字段,class T implements ProcessFile{
        private MessageGeter mg;
        //提供一个set方法或构造方法中传入
         public void setMessageGeter(MessageGeter mg){this.mg = mg;}    //在处理的时候把返回值放到mg中     public void process()throws ProcessException{
           if(mg != null) mg.xxx = rtObject;
         }
    }在外部调用:
    T t = new T();
    t.setMessageGeter(mg);
    t.process();
    Object rtValue = mg.xxx;
    OK
      

  2.   

    如果要写成接口,就把mg定义成接口,传进来,定义setRTValue方法和getRTValue方法,在process()方法中把返回值setRTValue中.
      

  3.   

    我像我的实现的程序能够做成这样:public class MyCallBack implements ProcessFile {
                    public void process() {
            ProcessFileCallBack callback = new ProcessFileCallBack{
        public String onFinish(){
            return msg;
                                }
                            }
                    }}
      

  4.   

    我像我的实现的程序能够做成这样:public class MyCallBack implements ProcessFile {
                    public void process() {
                             ProcessFileCallBack callback = new ProcessFileCallBack{
                                 public String onFinish(){
                                     return msg;
                                 }
                             }
                    }}
    该如何实现
      

  5.   

    ProcessFileCallBack 当然不是你来实现,如果是你来实现,调用者怎么知道调用什么方法?
    而是调用者来实现,你只管把返回的消息set进去就行了.
      

  6.   

    我是指如果另一个程序员实现我的接口,他要按照:public class MyCallBack implements ProcessFile {
                    public void process() {
                            ProcessFileCallBack callback = new ProcessFileCallBack{
                                public String onFinish(){
                                    return msg;
                                }
                            }
                    }}这样的形式实现回调那我的这个接口要怎么编写,还请大侠帮忙和指点迷津
      

  7.   

    我自己解决了啦,看看我的解决方法,是不是更封装,大家来评评!
    public class ProcessFileCallBack { private ProcessFile p = null;
    public ProcessFileCallBack(ProcessFile event){
    p = event;
    }
    public String processFile(){
    String result = "";
    p.process();
    return result;
    }
    }调用测试:public class MyCallBack implements ProcessFile {
    public void process() {

    ProcessFileCallBack callback = new ProcessFileCallBack(this){
    public String aprocessFile(){
    System.out.println("complete");
    return "good";
    }
    };
    callback.processFile();
    }}