Any practical difference in the use of Java's

2019-09-01 17:04发布

问题:

If I have the following Java class :

public class MyClass
{
  ...

  public static void main(String[] args) 
  {
   ...
  }
}

Is there any practical difference if I call it in the 2 different ways below ?

[1] new Stock_Image_Scanner().main(null);
[2] Stock_Image_Scanner.main(null);

回答1:

In the first one the constructor gets executed. In the second one it does not.



回答2:

main is a static function, and should not be called via an instance. It should only be called via the class name:

Stock_Image_Scanner.main(null);

In addition, null should really be changed to new String[]{}. And as stated @kg_sYy, the new way (via the instance) executes the classes constructor, which is generally unexpected and not recommended.

More info:

  • Why isn't calling a static method by way of an instance an error for the Java compiler?

  • Is calling static methods via an object "bad form"? Why?



回答3:

Just to say the same thing in yet another way:

new Stock_Image_Scanner().main(null);

Does the same thing as:

new Stock_Image_Scanner();
Stock_Image_Scanner.main(null);


标签: java static main