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);
In the first one the constructor gets executed. In the second one it does not.
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:
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);