'java static keyword

I know the definition of static which is a keyword to refer a variable or method to the class itself. Could this mean if I wrote a method called parseInt() in a class called calculator and another method called parseInt() in a different class called mathProgram, the compiler Eclipse will know which class the method parseInt() is referring to?



Solution 1:[1]

You need to call static methods by referencing the class it is a part of:

MathProgram.parseInt();

Is not the same as

Calculator.parseInt();

So written this way it is clear to the JVM which method you were referring to.

Edit: You can also call static methods using an instance variable but this is in bad form and should be avoided. See this SO answer for more info.

Edit2: Here's a link to the Java Coding Conventions section regarding the use of calling static methods from instance variables. (Thanks to Ray Toal for the link left in the answer to a question posted here)

Solution 2:[2]

Yes, because static methods and variables must be in a class and to call them outside of that class you need to qualify them.

For example Calculator.parseInt() and OtherClass.parseInt().

Eclipse uses that to tell them apart.

Solution 3:[3]

If the method is static, you need to call it using the classname:

Calculator.parseInt();

Otherwise, with an instance:

Calculator c = new Calculator();
c.parseInt();

Either way, its explicit which you want.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 cb4
Solution 2 cdmckay
Solution 3 cb4