在内部类中执行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.class
和 A$B.class
java
命令将类名作为参数,而不是文件名
如此简单的命令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
那么你将获得的类文件是A.class
、A$B.class
、A$B$1.class
、A$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方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章