my dog learned polymorphism
The moose likes Beginning Java and the fly likes Strange Java Code Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Strange Java Code" Watch "Strange Java Code" New topic

Strange Java Code

Igor Stojanovic
Ranch Hand

Joined: Feb 18, 2005
Posts: 58
The next one is strange. From the main(), we create a Foo instance, then we call getFoo() which returns a null and from "null" , we can access the value of fubar!

Can somebody explain this?
thx in advance

kind regards
Ernest Friedman-Hill
author and iconoclast

Joined: Jul 08, 2003
Posts: 24199

The JVM doesn't need an object of class Foo to access the static variable fubar; just knowing the name of the class is enough. You can access a static variable "through" an object reference just as a convenience; the compiler generates the same code as it would if you just wrote "Foo.fubar" .

I believe I remember reading something regarding a possible change to the JLS that would require such a null access to give an error at runtime, but I don't think that change was ever made.

[Jess in Action][AskingGoodQuestions]
I agree. Here's the link:
subject: Strange Java Code
It's not a secret anymore!