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

Java 我们可以在一个方法中有一个内部类吗?,java,inner-classes,Java,Inner Classes,可能重复: 我们可以在一个方法中有内部类吗 任何代码示例都会有帮助。是的,您可以: public static void main(String[] args) { class Foo implements Runnable { @Override public void run() { System.out.println("Hello"); } } Foo foo = new Foo(); } 不过,我建议

可能重复:

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

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

是的,您可以:

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

    Foo foo = new Foo();
}

不过,我建议不要这样做,最好是使用足够好的匿名内部类,或者在其他情况下使用不在方法内部的嵌套类。如果您需要在一个方法中使用一个命名类,这就意味着您需要获取它声明的额外成员,这将变得很混乱。将其拆分为自己的嵌套类(理想情况下,使其成为静态的,以删除一堆角壳)通常会使代码更清晰。

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

是的,您可以

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.
        }
      }
    }
  }

}
公开期末考试{
//用这种方法。
专用无效测试(){
//使用这个局部变量。
最终列表localList=newlinkedlist();
//我们可以定义一个类
类内部测试{
//是的,你可以!!
无效方法(){
//您甚至可以访问局部变量,但前提是它们是最终变量。
for(字符串s:localList){
//像这样。
}
}
}
}
}

是的,它被称为本地类:

你可以自己尝试一下,你知道。。。还有:局部内部类有一个很好的用途,即需要匿名类之类的东西,但需要类具有构造函数。@MathiasSchwarz:大多数情况下都可以使用初始值设定项块-在需要命名的构造函数中做什么?是的,这是另一种方法。然而,这些初始值设定项块的“参数”需要在外部范围(方法)中声明为final。