方法内部不允许接口

时间:2014-08-07 10:43:23

标签: java methods interface scjp

我研究了一些OCPJP 7认证的书籍,在内部课程章节中有一些奇怪/不完整的信息。我试图在方法中创建一个接口,但似乎你不能这样做,你只能在方法中创建类。你有什么理由不这样做,或者它只是一个缺失的功能吗?

示例代码:

public class Outer {
  public void method() {
    class C {} // allowed
    interface I {} // interface not allowed here
  }
}

1 个答案:

答案 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类的特定实例相关联),因此您无法拥有本地接口。