我在内部类中执行主要方法时遇到困难。外部类的main方法执行得很好,甚至其他类的main方法也执行得很好。但是,当我尝试执行 java Outer$Inner 时,它会执行外部类而不是内部类的主要方法。
代码如下:
class outer{
public static void main(String[] args) {
System.out.println("Outer class");
}
class inner{
public static void main(String[] args) {
System.out.println("Inner class");
}
}
}
class c{
public static void main(String[] args) {
System.out.println("Another class");
}
}
Output:
PS C:\Users\MY_PROJECTS> java outer
Outer class
PS C:\Users\MY_PROJECTS> java outer$inner
Outer class
PS C:\Users\MY_PROJECTS> java c
Another class
所有类文件都在同一目录中生成。 还有让我恼火的是这个 在内部类中没有运行或调试 main 方法的选项。
所以我想找出为什么会这样。
我的程序有一个
Illegal static declaration in inner class Outer.Inner
错误。
我不得不把它改成:
class Outer{
public static void main(String[] args) {
System.out.println("OUTER");
}
static class Inner{
public static void main(String[] args) {
System.out.println("INNER");
}
}
}
见
static
课。
然后,我可以运行 INNER 类:
PS D:\> java 'Outer$Inner'
INNER
注意引号。如果省略它们,Powershell 将运行
java Outer
($Inner
被替换为任何内容,因为变量未定义)。
常见的用法像这个例子一样用大写写类名。