2012-01-13 6 views
7

私は次のクラス階層シナリオを持っています。クラスAはメソッドを持ち、クラスBはクラスAを拡張しています。ここでは、ローカルにネストされたクラスからスーパークラスのメソッドを呼び出すことにします。 私は骨格構造がシナリオをより明確に描写してくれることを願っています Javaはそのような呼び出しを許可していますか?Javaローカルネストされたクラスとスーパーメソッドへのアクセス

class A{ 
    public Integer getCount(){...} 
    public Integer otherMethod(){....} 
} 

class B extends A{ 
    public Integer getCount(){ 
    Callable<Integer> call = new Callable<Integer>(){ 
     @Override 
     public Integer call() throws Exception { 
     //Can I call the A.getCount() from here?? 
     // I can access B.this.otherMethod() or B.this.getCount() 
     // but how do I call A.this.super.getCount()?? 
     return ??; 
     } 
    } 
    ..... 
    } 
    public void otherMethod(){ 
    } 
} 
+1

内部クラスから外部クラスのオーバーライドされたメソッド実装を呼び出すことは本当に確実ですか?私の右の混乱のように見えます。 –

+0

@Tom Hawtin - これは「内部」クラスではなく「ローカル匿名」クラスであると信じています。 – emory

+0

@emory技術的には、匿名の内部クラスはローカルクラスであり、内部クラスです。 –

答えて

21

あなただけのcall()A.getCount()を呼び出すためにB.super.getCount()を使用することができます。

5

あなたはおそらく

package com.mycompany.abc.def; 

import java.util.concurrent.Callable; 

class A{ 
    public Integer getCount() throws Exception { return 4; } 
    public Integer otherMethod() { return 3; } 
} 

class B extends A{ 
    public Integer getCount() throws Exception { 
     Callable<Integer> call = new Callable<Integer>(){ 
      @Override 
      public Integer call() throws Exception { 
        //Can I call the A.getCount() from here?? 
        // I can access B.this.otherMethod() or B.this.getCount() 
        // but how do I call A.this.super.getCount()?? 
        return B.super.getCount(); 
      } 
     }; 
     return call.call(); 
    } 
    public Integer otherMethod() { 
     return 4; 
    } 
} 

の線に沿ってB.super.getCount()

4

何かを使用するようにしましたか?

関連する問題