Static imports in JDK 1.5

Static imports have been introduced in 1.5 to remove the burden of having to qualify constant names. With static imports, you import the static members from a class rather than the classes from a package.

For example, suppose we have a class Einstein that calculates the formula E=m*c*c.

comesusEinstein.java:

package com.esus;
 
public class Einstein
{
   public static long SPEED_OF_LIGHT = 299792458;
 
   public static double getEnergy(double mass) {
      return mass * SPEED_OF_LIGHT * SPEED_OF_LIGHT;
   }
}

Here is an example of how to use this class before 1.5.

Main.java:

import com.esus.Einstein;
 
public class Main
{
   public static void main(String []args) {
      double energy = Einstein.getEnergy(1.0);
   
      System.out.println("Speed of light is " + Einstein.SPEED_OF_LIGHT + " m/s");
      System.out.println("1KG of mass gives " + energy + " Joules");
   
   }
}

In 1.5, things would get simpler and more readable.

Main.java:

import static com.esus.Einstein.*;
 
public class Main
{
   public static void main(String []args) {
      double energy = getEnergy(1.0);
    
      System.out.println("Speed of light is " + SPEED_OF_LIGHT + " m/s");
      System.out.println("1KG of mass gives " + energy + " Joules");
   }
}

Notice that you can import static member constants as well as static methods.