我刚刚在代码库中找到了一个静态嵌套接口.
class Foo {
public static interface Bar {
/* snip */
}
/* snip */
}
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个.最初的开发者是遥不可及的.因此我不得不问:
静态接口背后的语义是什么?如果我删除了会有什么变化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)不会产生相同的错误.我不明白为什么这是静态上下文以及错误的真正含义.