在内部类中执行main方法[重复]

Posted

技术标签:

【中文标题】在内部类中执行main方法[重复]【英文标题】:Execute main method inside inner class [duplicate] 【发布时间】:2013-07-10 08:31:33 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

试试这样的:

  java A$B

根据cmets更新:

在 linux shell 中你应该转义 $.于是命令变成了:

java 'A$B'

【讨论】:

如果 OP 在 Linux 上运行它,这将不起作用,因为 shell 将尝试查找名为 B 的变量。【参考方案2】:

它就像简单的类。运行命令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.classA$B.classA$B$1.classA$B$2.class(匿名类)和A$B$1MethodLocalClass.class

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

【讨论】:

【参考方案3】:

如果您的.java 文件有inner/nested 类,编译后这些类将由编译器生成为TheClass$xxx.class 文件。

见this:

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

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

【讨论】:

【参考方案4】:

在 Eclipse 中转到 Run -> Run Configurations -> 然后在左侧栏中选择 Java Application -> 点击新配置图标在左上角。

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

【讨论】:

以上是关于在内部类中执行main方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从main()方法中获取可执行jar的名称[重复]

为啥在内部类中使用公共方法?

无法在内部类线程中将文本设置为 EditText 或 TextView [重复]

java中main方法中声明的变量[重复]

java基础之内部类

如果我明确引用“this”以在内部类中使用会怎样?