我们可以在方法中有一个内部类吗?

时间:2012-02-27 11:11:50

标签: java inner-classes

  

可能重复:
  Use of class definitions inside a method in Java

我们可以在方法中使用内部类吗?

任何代码示例都会有所帮助。

4 个答案:

答案 0 :(得分:8)

是的,你可以:

public static void main(String[] args) {
    class Foo implements Runnable {
        @Override public void run() {
            System.out.println("Hello");
        }
    }

    Foo foo = new Foo();
}

我会建议不要这样做,在其他情况下,更喜欢匿名的内部类,它们是足够好的,或者在方法中嵌套类不是。如果你需要一个方法中的命名类,这表明你需要获得它声明的额外成员,这将变得混乱。将它分成它自己的嵌套类(理想情况下使它成为静态,删除一堆极端情况)通常会使代码更清晰。

答案 1 :(得分:8)

是的,你可以。

public final class Test {
  // In this method.
  private void test() {
    // With this local variable.
    final List<String> localList = new LinkedList<String>();
    // We can define a class
    class InnerTest {
      // Yes you can!!
      void method () {
        // You can even access local variables but only if they are final.
        for ( String s : localList ) {
          // Like this.
        }
      }
    }
  }

}

答案 2 :(得分:0)

是的,它被称为本地内部课程 - 您可以在网络搜索中使用此术语找到示例。

答案 3 :(得分:0)

是的,它被称为本地课程:Java Language Specification