Java Generics: non-static type variable T cannot be referenced from a static context

generics, java

Solution

All member fields of an interface are by default `public`, `static` and `final`.

Since inner interface is `static` by default, you can't refer to `T` from static fields or methods.

Because `T` is actually associated with an instance of a class, if it were associated with a static field or method which is associated with class then it wouldn't make any sense

Problem

``` interface A<T> { interface B { // Results in non-static type variable T cannot // be referenced from a static context T foo(); } } ``` Is there anyway round this? Why is T seen as static when referenced from A.B?

Original source

Related problems