Dlaczego następujący kod ma błąd kompilacji:nie można odnaleźć parametr typu, jeśli jest to wewnętrzna klasa podklasy w Javie
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();
}
}
Kompilacja drugich wyników klasy w:
MyFoo.java:1: cannot find symbol
symbol: class MyFooInner
public class MyFoo extends Foo<MyFooInner> {
^
1 error
Czy istnieje sposób obejścia tego problemu, poza umieszczeniem klasy wewnętrznej we własnym pliku?
To interesujące pytanie ... Nie jestem pewien, czy pozwala na to język, ponieważ Java Generics jest implementowana poprzez usuwanie typów. Spodziewałbym się, że będziesz musiał uczynić z MyFooInner klasę najwyższego poziomu. –