抽象类
abstract class A {
  protected static Logger log = AppContainer.getInstance().getLogger();
}子类
class B extends A {
 private Timer t;
 public B() {
   t = new Timer();
   t.schedule(new TimerTask() {
     public void run() {
       try {
         ....
       } catch(Exception e) {
         B.log.error(...);
       }
     }
   }
 }
}
这里的子类中的内部类应该如何使用父类的静态变量?

解决方案 »

  1.   

    说一下 我写的这种调用会报错。
    后来我在子类也加了log变量才解决了,但是觉得那样程序不漂亮,东西继承不下来
      

  2.   

    static是属于类的。不会被继承
      

  3.   

    o,以前想过O(∩_∩)O~,像这种就不要用匿名内部类了,但是可以用普通的内部类,这个问题稍复杂一点,但是有巧妙的办法:
    class B extends A {
    private Timer t;
    public B() {
    t=new Timer();
    t.schedule(new TT(this));
    }
     
    class TT extends TimerTask {
         B b;
         public TT(B b) {
        this.b=b;
    }
         public void run() {
        try {
     ...
    } catch(Exception e) {
        b.log.error(...); 
    }
    }
    }
    }
      

  4.   

    class B extends A {
    private Timer t;
    public B() {
    t=new Timer();
    t.schedule(new TT(this));
    }
     
    class TT extends TimerTask {
      B b;
      public TT(B b) {
      this.b=b;
    }
      public void run() {
      try {
     ...
    } catch(Exception e) {
      b.log.error(...);  
    }
    }
    }
    }
      

  5.   

    abstract class A {
      protected Logger log;
      public A(){
        log = AppContainer.getInstance().getLogger(); 
      }}class B extends A {
     private Timer t;
     public B() {
      t = new Timer();
      t.schedule(new TimerTask() {
      public void run() {
      try {
      ....
      } catch(Exception e) {
        B.this.log.error(...);
      }
      }
      }
     }
    }
      

  6.   

    静态变量可以直接通过 类名.变量名访问.
    你的例子应该A.log 就可以了