如何解决为什么public static void main方法不能在实例化类中自动运行?
我了解我的入门班public static void main
的要点-具有在程序运行时执行的代码。
我在网上阅读的一些文章指出,任何课程都可以有一个主课程。我创建了第二个类,该类从第一个类调用,并创建了它的一个实例,但是第二个类main方法中的代码无法运行。我是否误解了该方法在主类之外的其他类中如何工作?
public class Main {
public static void main(String[] args) {
aClass newClass = new aClass();
}
}
public class aClass{
public static void main(String[] args) {
System.out.println("hello");
}
}
解决方法
“任何班级都可以有一个班级”确实是这样。但是,无论有多少个类有一个,都只运行一个 main
方法。
运行哪种main
方法取决于应用程序的指定入口点,即,通过java name.of.class
运行代码时您显式指定为入口点的内容,或JAR清单指示为作为入口点。
相反,您可以为类提供一个静态初始化块。第一次加载该类时,该块将运行一次:
public class Main {
public static void main(String[] args) {
new aClass();
new aClass();
}
}
public class aClass{
static {
// Run only once!
System.out.println("hello");
}
}
即使您没有实例化您的类,但是,例如,在其上调用静态方法,该代码也将运行。但是,如果您的代码中没有任何内容完全引用aClass
,则它的静态初始化程序将不运行。
JVM在一类上调用main
方法(当然,除非明确地调用它)。
如果您希望在实例化aClass
时调用代码,则需要将代码移至构造函数:
public class aClass{
public aClass() {
System.out.println("hello");
}
}
,或者,当然,明确地调用aClass.main
:
public class Main {
public static void main(String[] args) {
aClass.main(args);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。