5

What real (i.e. practical) difference between a normal import statment and static import statement?

import static java.lang.System.*;    
class StaticImportExample{  
  public static void main(String args[]){  

   out.println("Hello");
   out.println("Java");  

 }   
}  

import java.lang.System.*;    
class StaticImportExample{  
  public static void main(String args[]){  

   System.out.println("Hello"); 
   System.out.println("Java");  

 }   
}  
Lucifer
  • 29,392
  • 25
  • 90
  • 143
Shakthi Vel
  • 61
  • 1
  • 6
  • [refer the following URL you will get the answer][1] [1]: http://stackoverflow.com/questions/162187/what-does-the-static-modifier-after-import-mean – user247813 Feb 12 '15 at 12:26
  • Possible duplicate of [What does the "static" modifier after "import" mean?](https://stackoverflow.com/questions/162187/what-does-the-static-modifier-after-import-mean) – xyz Feb 02 '18 at 11:22

2 Answers2

6

From java 5 onwards static import was introduced. Practically "import static" is used to reduce the number of keystrokes, which means that you need not to write the class name for a static member that you want to use.

As in your example, with import static java.lang.System.* you only need to write out.println("Hello"); whereas normally you have to write System.out.println("Hello"); i.e we have to write the class name(System) every time we need to call the static member(out) of it.

Andreas
  • 4,937
  • 2
  • 25
  • 35
1

In addition to @venkatesh's answer, it is worth pointing out the javadoc documentation about when should static import be used?

So when should you use static import? Very sparingly! Only use it when you'd otherwise be tempted to declare local copies of constants, or to abuse inheritance (the Constant Interface Antipattern). In other words, use it when you require frequent access to static members from one or two classes. If you overuse the static import feature, it can make your program unreadable and unmaintainable, polluting its namespace with all the static members you import. Readers of your code (including you, a few months after you wrote it) will not know which class a static member comes from. Importing all of the static members from a class can be particularly harmful to readability; if you need only one or two members, import them individually. Used appropriately, static import can make your program more readable, by removing the boilerplate of repetition of class names.

Simon
  • 2,643
  • 3
  • 40
  • 61