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

时间:2012-06-09 18:41:36

标签: java generics

interface A<T> {

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

}

无论如何围绕这个?从A.B?

引用时,为什么T被视为静态

3 个答案:

答案 0 :(得分:6)

界面的所有成员字段默认为publicstaticfinal

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

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

答案 1 :(得分:3)

这样的事情怎么样。

public interface A<T> {

     interface B<T> extends A<T>{

       T foo(); 
    }

}

答案 2 :(得分:0)

您的内部接口不知道T是什么。试试这个。

interface A<T> {

    interface B<T> {
       T foo(); 
    }

}