在内部类中执行main方法

Din*_*h M 15 java inner-classes

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

class A {
     static class B {
          public static void main(String[] args) {
             System.out.println("Done");
          }
     }
}
Run Code Online (Sandbox Code Playgroud)

yat*_*tul 18

尝试这样的事情:

  java A$B
Run Code Online (Sandbox Code Playgroud)

根据评论更新:

在linux shell中你应该逃避$.所以这个命令成了:

java 'A$B'


Pra*_*kar 10

就像简单的课程一样.运行命令java A$B 编译内部类时,它前面加上外部类名称在这种情况下,您有两个类文件.即.A.classA$B.class

  • java command将classname作为参数而不是文件名
  • 如此简单的命令java A$B将完成工作
  • 如果你有匿名类,那么类名将会是OuterClass$1,OuterClass$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 {
            }                                           
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那么类文件,你会得到的是A.class,A$B.class,A$B$1.class,A$B$2.class为匿名类和A$B$1MethodLocalClass.class.

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


Mar*_*oun 6

如果您的.java文件具有内部/嵌套类,则后期编译将由编译器生成为TheClass $ xxx.class文件.

看到这个:

内部类定义生成其他类文件.这些类文件具有组合内部和外部类名称的名称,例如 MyClass $ MyInnerClass.class.

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