在某个类里有下面的方法:
private String getHeapMemInfo(PcInfo p) {
HeapMemMonitor cm = new HeapMemMonitor(p.getIp(), p.getPort(), new                   Handler<MemInfo>(){
    @Override   
    public void action(MemInfo memInfo) {  
      long total = memInfo.getMax();
      long used = memInfo.getUsage();
      String info = "已使用:"+total + "\n"
       +"未使用:"+used + "\n";
    }    
});
return ""; // 这里应该返回的是上面的info值
}
}怎样得到匿名类里运行的最后结果(info)值?
求解??   
最好能有例子,谢谢!!!Stringjava匿名类

解决方案 »

  1.   

    你得不到的。别的不说,在方法返回时,action(MemInfo memInfo)函数可能都还没有执行呢。这里只是创建了一个匿名类的实例,并没有调用它的方法。
      

  2.   

    你得不到的。别的不说,在方法返回时,action(MemInfo memInfo)函数可能都还没有执行呢。这里只是创建了一个匿名类的实例,并没有调用它的方法。那怎样才能得到呢?  
    大能  求解!!!
      

  3.   

    如果在action()方法内部打印info值,能打印出来。
    问题是就是不能传出来
    怎么个解决法??
      

  4.   

    package xxx;
    public class test { private String result;

    public   String methordCall(){
    CallInnerClass callInnerClass = new CallInnerClass(new InnerClass(){
    @Override
    public void action(){
    test.this.result = "inner value";
    }
    });
    return result;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println(new test().methordCall());
    }}
    ------------------------------
    package xxx;
    public class test { private String result;

    public   String methordCall(){
    CallInnerClass callInnerClass = new CallInnerClass(new InnerClass(){
    @Override
    public void action(){
    test.this.result = "inner value";
    }
    });
    return result;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println(new test().methordCall());
    }}
    ------------------------------
    package xxx;
    public class InnerClass {
    public void action(){
    System.out.println("action called.");
    }
    }
    只想到了一个这么挫的办法,明天再想想看。
      

  5.   

    楼上的兄弟,例子不对喔,返回结果是null,这个方法我早试过了。不知道兄弟还有没有其他的方法呢??
      

  6.   

    lz,返回是NULL的情况,很有可能是你的action没有调用到
      

  7.   

    楼上,我在action方法内部打印结果,能打印出来
      

  8.   

    public class test5 {
    private String result1; public   String methordCall(){

    CallInnerClass callInnerClass = new CallInnerClass(new InnerClass(){
    @Override
    public void action(){
    r = "inner value";
    }
    });
    result1=callInnerClass.c;
    return result1;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
    //  TODO Auto-generated method stub
    System.out.println(new test5().methordCall());
    }}
    public class InnerClass {
    public InnerClass(){
    action();
    }
    String r=""; public void action(){
    System.out.println("action called.");
    }
    }
    public class CallInnerClass {
    String c="";
    public CallInnerClass(InnerClass class1) {
    // TODO Auto-generated constructor stub
    c=class1.r;
    } public void action(){
    System.out.println("action called.");
    }
    }