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

时间:2014-12-18 18:03:55

标签: java static

我尝试编译以下代码:

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

    void foo(T t);
}

但是我收到了这个错误:&#34; Foo。这不能从静态上下文中引用。&#34;

具体来说,我是在&#34; T&#34;在酒吧(T t)。但是foo(T t)不会产生相同的错误。我不明白为什么这是一个静态背景以及错误的真正含义。

1 个答案:

答案 0 :(得分:12)

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

参见例如JLS #8.5.1

  

成员接口是隐式静态