15

如果 main 方法存在于静态内部类中,如何执行它?
Main 方法存在于静态内部类中,我们需要执行该 main 方法。

class A {
     static class B {
          public static void main(String[] args) {
             System.out.println("Done");
          }
     }
}
4

4 回答 4

18

尝试这样的事情:

  java A$B

根据评论更新:

在 linux shell 中,你应该转义 $. 所以命令变成了:

java 'A$B'

于 2013-07-10T08:33:25.060 回答
10

它就像简单的类。运行命令java A$B 当编译内部类时,它会附加外部类名。在这种情况下,你是两个类文件。IE 。A.classA$B.class

  • java命令将类名作为参数,而不是文件名
  • 如此简单的命令java A$B就可以完成工作
  • 如果您有匿名类,那么类名将类似于OuterClass$1OuterClass$1依此类推。

因此,如果您将示例修改如下,现在包括匿名和方法本地内部类

import java.io.Serializable;

public class A {
    static class B {
        public static void main(String[] args) {
            System.out.println("Done");
            Serializable obj = new Serializable() {
            };
            Serializable obj1 = new Serializable() {
            };
            class MethodLocalClass {
            }                                           
        }
    }
}

然后,您将获得的类文件是A.class, A$B.class, A$B$1.class,A$B$2.class用于匿名类和A$B$1MethodLocalClass.class.

希望这个例子有点帮助:)

于 2013-07-10T08:34:27.080 回答
6

如果你的.java文件有内部/嵌套类,编译后那些由编译器生成为TheClass$xxx.class文件。

看到这个

内部类定义产生额外的类文件。这些类文件的名称结合了内部和外部类名称,例如 MyClass$MyInnerClass.class

所以你应该这样做:java A$B

于 2013-07-10T08:35:54.530 回答
1

在 Eclipse 中,转到Run -> Run Configurations -> 然后在左列中选择Java Application -> 单击左上角的新配置图标。

在我的例子中,它使用 main 方法自动获取了我的内部类。这只是一个简单的示例类,我想在不创建另一个测试/客户端类的情况下对其进行测试。

在此处输入图像描述

于 2019-03-01T18:16:38.917 回答