问题如下:
Class A
{
    void method(
      new runnable()
     {
         public void run() 
         {
             int b = methodB()  ;  
         }
     }     
   );
  //我想在这个地方得到变量b的值该怎么办???
}

解决方案 »

  1.   

    Class A 
    {     void method( 
          new runnable() 
        { 
            public void run() 
            { 
                b = methodB()  ;  
            } 
        }    
      ); 
      int b;
      //我想在这个地方得到变量b的值该怎么办??? 
    }把 b 放到这里声明就行了!
      

  2.   

    Class B{
      int value;
    }Class A{
        B b = new B();
        void method(
          new runnable(){
            int b;
            public void run(){
                b = methodB(); 
                
            }
            public void getValue(final B b){  //一定得是final的
                b.value = b ;
            }
        }.getValue(b);
      ){
       b.value ; //我想在这个地方得到变量b的值该怎么办???
    }可是这样一来你的thread却没有start了~
      

  3.   

    你这个和这个帖子出奇的相似 http://topic.csdn.net/u/20080623/11/4b43e6c9-5eb1-4eb1-a990-0ceb8d6ba9cc.html
      

  4.   

    补充一下问题啊~~Class A 

      int b ; 
      void method0()
      {   
       void method1( 
          new runnable() 
        { 
            public void run() 
            { 
                 b = method2()  ;  
            } 
        }    
       ); 
       
      //楼上的~~把b定义在外部类中,现在在这个地方访问b可以不,因为内部类能访问外部类的变量~~~  
     //我想在这个地方得到变量b的值该怎么办???  } 
      }
      

  5.   

    老紫竹的正解
    不过要注意多线程class A {    static int b;    static void doSomething() {
            new Thread() {            public void run() {
                    System.out.println("1 In thread : b = " + b);
                    b = 10;
                    System.out.println("2 In thread : b = " + b);
                }
            }.start();
        }    public static void main(String[] args) {
            A.doSomething();
            for (int i = 0; i < 50; i++) {
                System.out.println(i+" In main : b = " + b);
            }
        }
    }猜猜结果:
    0 In main : b = 0
    1 In main : b = 0
    2 In main : b = 0
    3 In main : b = 0
    4 In main : b = 0
    5 In main : b = 0
    .
    .
    .
    49 In main : b = 0
    1 In thread : b = 0
    2 In thread : b = 10这是结果之一,我运行了很多次,有好几个可能的结果,也可能在二十多的时候b=10了
    但第一次的时候,b肯定是0的,这时候,怎么样才能得到正确的值?