【发布时间】:2014-12-18 18:03:55
【问题描述】:
我尝试编译以下代码:
public interface Foo<T> {
public interface Bar {
public void bar(T t);
}
void foo(T t);
}
但我收到此错误:“Foo.this 无法从静态上下文中引用。”
具体来说,我在 bar(T t) 中的“T”上得到它。但是 foo(T t) 不会产生相同的错误。我不明白为什么这是一个静态上下文以及错误的真正含义。
【问题讨论】:
-
public interface Bar<T> { -
@brso05 这将重新定义
T而不是重用它,因此T可能具有不同的值,我认为这不是 OP 想要的。 -
@Thomas 除非你用同一个类重新定义它...
-
@BarryFruitman 我可能会为内部
T使用不同的名称,以便您看到编译器看到的差异。隐藏外部T可能会导致难以跟踪的错误。