型が合わん…。

こんなinterfaceを宣言してみた。

public interface A<L, R> {
  B<L, R> b();

  List<B<L, R>> nestedb();
}

public interface B<L, R> {}


で、更にこいつらを使って、こんな型を宣言しる。

public interface NumberedA extends A<Integer, Long> {
  NumberedB b();

  List<B<Integer, Long>> nestedb();
}

public interface NumberedB extends B<Integer, Long> {}


で、呼び出すコードを書いてみる。

public class Main {
  public void main(String[] args) {
    NumberedA np = null;
    NumberedB kids = np.b();
    B<Integer, Long> kids2 = np.b();

    List<NumberedB> fs2 = np.nestedb();
    List<B<Integer, Long>> fs = np.nestedb();
  }
}

実行とか、しないよ。

で、

List<NumberedB> fs2 = np.nestedb();

の部分が、コンパイルエラーになるのは、何故なんだぜ?