我在查看website上的示例代码。这是一个片段,
public class ManageEmployee {
private static SessionFactory factory;
public static void main(String[] args) {
try{
factory = new Configuration().configure().buildSessionFactory();
}catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
ManageEmployee ME = new ManageEmployee();
/* Add few employee records in database */
Integer empID1 = ME.addEmployee("Zara", "Ali", 1000);
Integer empID2 = ME.addEmployee("Daisy", "Das", 5000);
Integer empID3 = ME.addEmployee("John", "Paul", 10000);
为什么这堂课会自称?看起来它会一直在循环中调用自己。这节课在这里做什么,ManageEmployee ME = new ManageEmployee();
?感谢。
答案 0 :(得分:14)
main
方法创建其定义的类的新实例并不罕见。但创建实例不会再次调用main
。请记住,main
是一种静态方法,与任何特定实例无关。
答案 1 :(得分:3)
其他成员在这里提到的关键点是运行程序和实例化类是两回事。当您在java中编写Hello World时,您编写了以下内容:
public static void main(String[] args) {
System.out.println("Hello World");
}
当您执行包含它的类时,main方法会运行。但是,在此主方法(在静态上下文中)中,您可以执行以下操作:
ArrayList<String> stringList = new ArrayList<String>();
这称为实例化,这里我们实例化ArrayList
类型String
。发生这种情况时,ArrayList
内的主方法不会被调用 - 相反,它的构造函数是。因此,在我们的main方法中,我们可以实例化包含main方法的类,并调用构造函数,而不是main方法:
public class TestClass {
public TestClass(String greeting) {
System.out.println(greeting);
}
public static void main(String[] args) {
TestClass c = new TestClass("Hello World");
}
}
&#34; Hello World&#34;当从main方法中调用构造函数时,将打印一次。
答案 2 :(得分:2)
是的,一个类调用自身的方法绝对没问题,
不,它不会循环,因为实例化一个类不会自动调用它的所有方法。
main
方法运行的原因是因为Java寻找单个main
方法作为其入口点。
main
是一种static
方法,因此无论如何它都与任何实例无关。
答案 3 :(得分:1)
在程序正常启动时,方法只被调用一次。
public static void main(String[] args) {
在此程序中,您的程序会从 ManageEmploye 类型创建一个对象,因此可以访问其非静态属性