Pages

static import

First lets understand what does “java import” does to your java program!
Consider the java import statements:
1) import package.ClassA;2) import package.*;
Java statement (1) gives you a license to use ClassA inside the whole program without the package reference. That is you can use like ClassA obj = new ClassA(); orClassA.getStatic(); Java statement (2) allows you to use all the java classes that belong the imported package in the above manner. That is without the package reference.
If you don’t use import statement, you can still use the classes of that package. But you should invoke it with package reference whereever you use.
That is like, package.ClassA obj = new package.ClassA(); – looks very ugly isn’t it?
Now coming to the static import part. Like the above ugly line we have been unknowingly using (abusing) the java static feature.
Consider the java example: double r = Math.cos(Math.PI * theta);
How about writing the same java code like: double r = cos(PI * theta); – looks more readable right?
This is where static import in java comes to help you.
import static java.lang.Math.PI;
import static java.lang.Math.cos;
Do the above static imports and then you can write it in the more readable  way!

Java Static Import

The normal import declaration imports classes from packages, so that they can be used without package reference. Similarly the static import declaration imports static members from classes and allowing them to be used without class reference.
Now, we have got an excellent java feature from java 1.5. Ok now we shall see how we can abuse this!

Can i static import everything?

like, import static java.lang.Math.*; – yes it is allowed! Similarly you do for class import.
Please don’t use this feature, because over a period you may not understand which static method or static attribute belongs to which class inside the java program. The program may become unreadable.
General guidelines to use static java import:
1) Use it to declare local copies of java constants
2) When you require frequent access to static members from one or two java classes
package test;
import static java.lang.Integer.MAX_VALUE;
import static java.lang.Integer.MIN_VALUE;
/**
 *
 * Java program to demonstrate How to use static import in Java 5
 * By using static import you can use static field of external class
 * as they are declared in same class.
 *
 * @author Javin Paul
 */
public class StaticImportExample {

    public static void main(String args[]) {
      
       //without Static import
        System.out.println("Maximum value of int variable in Java without " +  
                            "static import : "  + Integer.MAX_VALUE);
        System.out.println("Minimum value of int variable in Java without " +
                            static import : " + Integer.MIN_VALUE);
      
        //after static import in Java 5
        System.out.println("Maximum value of int variable using " +
                            static import : " + MAX_VALUE);
        System.out.println("Minimum value of int variable using" +
                            static import : " + MIN_VALUE);
    }
}

Output:
Maximum value of int variable in Java without static import : 2147483647
Minimum value of int variable in Java without static import : -2147483648
Maximum value of int variable using static import : 2147483647
Minimum value of int variable using static import : -2147483648

Static import in Java allows to import static members of class and use them, as they are declared in the same class. Static import is introduced in Java 5 along with other features like Generics, Enum, Autoboxing and Unboxing and variable argument methods. Many programmer think that using static import can reduce code size and allow you to freely use static field of external class without prefixing class name on that. For example without static import you will access static constant MAX_VALUE of Integer class as Integer.MAX_VALUE but by using static import you can import Integer.MAX_VALUE and refer it as MAX_VALUE. Similar to regular import statements, static import also allows wildcard * to import all static members of a class. In next section we will see Java program to demonstrate How to use static import statements to import static fields.