Java Generics: переменная типа нестатического типа T не может ссылаться на статический контекст
interface A<T> {
interface B {
// Results in non-static type variable T cannot
// be referenced from a static context
T foo();
}
}
Вокруг этого? Почему T рассматривается как статический при ссылке из A.B?
Ответы
Ответ 1
Поля всех полей интерфейса по умолчанию public
, static
и final
.
Поскольку по умолчанию внутренний интерфейс static
, вы не можете ссылаться на T
на статические поля или методы.
Поскольку T
фактически связан с экземпляром класса, если он был связан со статическим полем или методом, связанным с классом, то это не имело бы смысла
Ответ 2
Как насчет чего-то подобного.
public interface A<T> {
interface B<T> extends A<T>{
T foo();
}
}