Java 泛型:不能从静态上下文中引用非静态类型变量 T

2022-09-02 13:55:10
interface A<T> {

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

}

这到底是不是圆的?为什么从 A.B 引用 T 时被视为静态?


答案 1

默认情况下,接口的所有成员字段都是 和 。publicstaticfinal

由于内部接口是默认的,因此不能从静态字段或方法引用。staticT

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


答案 2

像这样的东西怎么样。

public interface A<T> {

     interface B<T> extends A<T>{

       T foo(); 
    }

}

推荐