Java で内部クラスのメソッドをオーバーライドしたい


Java で以下のようなことは可能でしょうか。

[code]

    abstract class A<T extends B> {
      T baz;
    
      A() {}
    
      String getFoo() {
        return this.baz.b1;
      }
    
      class B {
        String b1;
        B() {
          this.b1 = "bar";
        }
      }
    }
    
    class A' extends A<B'> {
      A'() {
        this.baz = new B'();
      }
    
      String getBar() {
        return this.baz.b2;
      }
    
      class B' extends B {
        String b2;
        B'() {
          super();
          this.b2 = "bar";
        }
      }
    }
    
    class Main {
      public static void main(String[] args) {
        A' a = new A'();
        System.out.println(a.getFoo() + a.getBar()); // out "foobar"
      }
    }
    
[/code]

また、クラス B のメソッドをクラス B' でオーバーライドすることは可能でしょうか。




可能ですが、サンプルコードは、`A`クラスの宣言部で既にエラーが起こっていますよ。

Aの宣言時に内部クラスが見つからないのでエラーになります。（Aクラスの定義行自体は`A`クラスの内部にない＝Bクラスがスコープ外)

[code]

    class A<T extends B> { // B にアクセスできない
        class B {}
    }
    
[/code]

以下だと大丈夫。

[code]

    class A<T extends A.B> {
        class B {}
    }
    
[/code]

