我研究了一些OCPJP 7认证的书籍,在内部课程章节中有一些奇怪/不完整的信息。我试图在方法中创建一个接口,但似乎你不能这样做,你只能在方法中创建类。你有什么理由不这样做,或者它只是一个缺失的功能吗?
示例代码:
public class Outer {
public void method() {
class C {} // allowed
interface I {} // interface not allowed here
}
}
答案 0 :(得分:7)
如果您仔细阅读Java Tutorials,您会看到:
您无法在块内声明接口,因为接口本质上是静态的。
这意味着如果你有一个接口,就像这个:
public class MyClass {
interface MyInterface {
public void test();
}
}
你将能够做到
MyClass.MyInterface something = new MyClass.MyInterface() {
public void test () { .. }
};
因为MyInterface
将明确static
。绑定到封闭类的实例是没有意义的,因为它只是提供了一些抽象,它不必绑定到特定实例或状态封闭的班级。
同样的情况是,接口嵌套在方法中。方法中的任何内容都不能(显式地)static
(因为非静态方法与enlosing类的特定实例相关联),因此您无法拥有本地接口。