Java – access to instances of static methods
•
Java
I just started using Java. I was looking at the nested class topic and tried something. Suddenly, this happened:
class Encloser { static int i; static void m1() { System.out.println(i); } static void m2() { Enclosee.accessEncloser(); } static class Enclosee { static void accessEncloser() { i = 1; m1(); } static void accessEncloserNew() { m2(); } } } class EncloserTest { public static void main(String[] args) { Encloser ee = new Encloser(); Encloser.Enclosee e = new Encloser.Enclosee(); ee.m1(); ee.m2(); e.accessEncloser(); e.accessEncloserNew();Encloser.m1(); Encloser.m2(); Encloser.m1(); Encloser.Enclosee.accessEncloserNew(); Encloser.Enclosee.accessEncloser(); } }
Running the above code will not give any errors / exceptions It just runs The confusion here is, how does an instance call a static method here? Isn't it a static method like the class method in ruby?
Any explanation will be appreciated:)
Solution
This is allowed by the language:
ee.m1();
But you should write:
Encloser.m1();
The compiler should issue the following warning to inform you:
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码