为什么我不能在内部接口中使用泛型?

Bar*_*man 16 java static

我试着编译以下代码:

public interface Foo<T> {
    public interface Bar {
        public void bar(T t);
    }

    void foo(T t);
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误:"Foo.这不能从静态上下文中引用."

具体来说,我把它放在栏中的"T"(T t).但是foo(T t)不会产生相同的错误.我不明白为什么这是静态上下文以及错误的真正含义.

ass*_*ias 12

"嵌套"接口(示例中为Bar)是隐式静态的.因此它无法访问与Foo相关的实例特定信息,例如其泛型类型.

请参阅例如JLS#8.5.1:

成员接口是隐式静态的