Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Java has static <em>nested</em> classes but it sounds like you're looking for a top-level static class. Java has no way of making a top-level class static but you can simulate a static class like this:</p> <ul> <li>Declare your class <code>final</code> - Prevents extension of the class since extending a static class makes no sense</li> <li>Make the constructor <code>private</code> - Prevents instantiation by client code as it makes no sense to instantiate a static class</li> <li>Make <strong>all</strong> the members and functions of the class <code>static</code> - Since the class cannot be instantiated no instance methods can be called or instance fields accessed</li> <li>Note that the compiler will not prevent you from declaring an instance (non-static) member. The issue will only show up if you attempt to call the instance member</li> </ul> <p>Simple example per suggestions from above:</p> <pre><code>public class TestMyStaticClass { public static void main(String []args){ MyStaticClass.setMyStaticMember(5); System.out.println("Static value: " + MyStaticClass.getMyStaticMember()); System.out.println("Value squared: " + MyStaticClass.squareMyStaticMember()); // MyStaticClass x = new MyStaticClass(); // results in compile time error } } // A top-level Java class mimicking static class behavior public final class MyStaticClass { private MyStaticClass () { // private constructor myStaticMember = 1; } private static int myStaticMember; public static void setMyStaticMember(int val) { myStaticMember = val; } public static int getMyStaticMember() { return myStaticMember; } public static int squareMyStaticMember() { return myStaticMember * myStaticMember; } } </code></pre> <p><strong>What good are static classes?</strong> A good use of a static class is in defining one-off, utility and/or library classes where instantiation would not make sense. A great example is the Math class that contains some mathematical constants such as PI and E and simply provides mathematical calculations. Requiring instantiation in such a case would be unnecessary and confusing. <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Math.html" rel="noreferrer">See Java's Math class</a>. Notice that it is final and all of its members are static. If Java allowed top-level classes to be declared static then the Math class would indeed be static.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload