Java泛型:无法从静态上下文引用非静态类型变量T.

aus*_*ser 16 java generics

interface A<T> {

    interface B {
       // Results in non-static type variable T cannot
       // be referenced from a static context
       T foo(); 
    }

}
Run Code Online (Sandbox Code Playgroud)

无论如何围绕这个?为什么从AB引用时T被视为静态?

Jig*_*shi 6

接口的所有成员字段默认public,staticfinal.

由于内部接口是static默认的,因此您无法T从静态字段或方法引用.

因为T实际上是与一个类的实例相关联,如果它与一个与类关联的静态字段或方法相关联,那么它就没有任何意义

  • 我会删除第一句,因为它是不必要的和误导性的 - 是的接口字段是隐式的"public static final",但这与interface*methods*有关,它们是隐式的`public abstract`.内部接口本身是隐式"静态"的,这一点很重要. (2认同)