一个类可以实例化吗?

joh*_*nny 3 java oop

我在网站上查看示例代码.这是一个片段,

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);
Run Code Online (Sandbox Code Playgroud)

为什么这个班级自称?看起来它会一直在循环中调用自己.这堂课在这做什么,ManageEmployee ME = new ManageEmployee();?谢谢.

Dan*_*Dan 14

一个main方法创建它所定义的类的新实例并不罕见.但是创建实例不会main再次调用.请记住,main是一种静态方法,不依赖于任何特定实例.


小智 5

这里其他成员没有提到的关键点是运行程序和实例化类是两件不同的事情。当你用java编写Hello World时,你写了以下内容:

public static void main(String[] args) {
    System.out.println("Hello World");
}
Run Code Online (Sandbox Code Playgroud)

main 方法在您执行包含它的类时运行。但是,在此 main 方法中(在静态上下文中),您可以执行以下操作:

ArrayList<String> stringList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

这称为实例化,这里我们实例化一个ArrayListtype String。当这种情况发生时,内部的 main 方法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");
    }
}
Run Code Online (Sandbox Code Playgroud)

当从 main 方法中调用构造函数时,“Hello World”将被打印一次。