¿Por qué el siguiente código tiene un error de compilación:No encontraste parámetro de tipo si es una clase interna de la subclase en Java
Foo.java:
public abstract class Foo<T> {
public abstract T getInner();
}
MyFoo.java:
public class MyFoo extends Foo<MyFooInner> {
public static class MyFooInner {
}
public MyFooInner getInner() {
return new MyFooInner();
}
}
Compilación de los segundos resultados de la clase en:
MyFoo.java:1: cannot find symbol
symbol: class MyFooInner
public class MyFoo extends Foo<MyFooInner> {
^
1 error
¿Hay alguna forma de evitar este problema además de poner la clase interna en su propio archivo?
Esta es una pregunta interesante ... No estoy seguro de que el lenguaje lo permita, ya que los genéricos de Java se implementan mediante borrado de tipo. Espero que tengas que hacer de MyFooInner una clase de nivel superior. –