я получил следующее:Java дженериков/аннотация/InnerClass синтаксис вопрос
public abstract class Foo<T>{
//contents of Foo //
...
public class Bar<Q> extends Foo<T>{
//contents of Foo.Bar //
...
}
}
Позже, в другом классе и Java файл, я пытаюсь построить экземпляр внутреннего класса Bar выше, используя внешний абстрактный класс как супертип. Чтобы еще больше усложнить ситуацию, новый класс имеет свой собственный родовой характер. Не работает:
public class SomeOtherClass<A>{
private Foo<A> x;
public SomeOtherClass(){
x = Foo<A>.Bar<A>();
}
}
Но это не сработает; и не все остальные комбо, которые я пробовал. Итак, как мне создать экземпляр x? Можно ли это сделать, если не удалить параметр Foo? Я не хочу удалять параметр Foo, потому что абстрактные методы имеют общий параметр в своих подписях.
Я не понимал, что есть место, чтобы принять лучший ответ. Прости! – Jay
не забывайте использовать статические вложенные классы вместо внутренних классов, когда это возможно, и наблюдайте, как большинство странных запутанных проблем просто исчезают. –