why top level class could not be static

Answer Posted / sathishkumarbabu

All top-level classes are, by definition, static.

What the static boils down to is that an instance of the class can stand on its own. Or, the other way around: a non-static inner class (= instance inner class) cannot exist without an instance of the outer class. Since a top-level class does not have an outer class, it can't be anything but static.

Because all top-level classes are static, having the static keyword in a top-level class definition is pointless.

Some code to play around with:

public class Foo {

public class Bar {
// Non-static innner class
}

public static class Baz {
// Static inner class
}
}

public class Example {
public static void main(String[] args) {
new Foo(); // this is ok
new Foo.Baz(); // this is ok
new Foo.Bar(); // does not compile!

Foo f = new Foo();
Foo.Bar bar = f.new Bar(); //this works, but don't do this
}
}

I put the "but don't do this" in there because it's really ugly code design. Instance inner classes should not be visible outside the outer class. They should only be used from within the outer class.

Regards : Barend Garvelink

Is This Answer Correct ?    3 Yes 4 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

What is JVM and is it platform independent?

556


What is use of inner class in java?

513


Why do we use regex?

555


what is the purpose of the wait(), notify(), and notifyall() methods? : Java thread

559


Differentiate between nested and inner class in java.

552






What is the difference between hashset and treeset in java?

533


What is an interoperable application in java ?

581


What is an iterator java?

527


What is difference between static and abstract class?

516


define polymorphism in java

629


Why java is call by value?

544


Why java applets are more useful for intranets as compared to internet?

577


What is immutable in java?

537


What is the difference between synchronized and synchronized block?

498


What is constructor chaining in java?

583