从J2SE5开始,import不仅可以导入包或者类,还可以导入静态方法和静态域。这样做的好处是当对静态方法或属性的频繁调用时,会减少我们的代码量。当使用静态导入后,我们在使用类中的静态属性或方法时,就不需要在静态属性或方法前加类来引用。我们知道在java.lang包中提供了大量的静态方法,这些方法我们也是经常的被使用到,频率很高,如java.lang.Math和java.lang.System等。
=========================Writed by Jack.Hao on 2011.01.20========================
1)静态类的导入
我们在导入类时使用import ,而静态导入则使用import static 作为关键字。如果在源文件顶部添加
import static java.lang.System.*;
那我们就可以直接在类中使用StringUtils类的静态方法和静态域,而不必加类前缀
如:
out.println("hello world"); 相当于 System.out.println( "hello world" ) ;
exit( 0 ) ; 相当于 System.exit( 0 ) ;
2)静态域的导入
import static java.lang.System.out;
我们在使用时直接可写成println(0);
3)注意事项
A、静态导入需要提供完整的包及类的全路径信息,最低要求要精确到类,否则将无法编译。如下:
import static java.lang.*; //错误,无法将一个包中所有静态类使用此种写法完成
import static java.lang.System.*; //正确,导入System静态类中的所有静态方法
import static java.lang.System.out ;//正确,导入System静态类中的静态域out,我们可直接调用println()
B、如果一个静态域与类中的本地方法拥有相同的名称及参数列表,那么本地方法的优先级要高于静态域,我们调用时,本地方法将优先被调用。
C、静态导入特性在使得时要慎重,虽然静态导入的引用,使我们的代码更加简洁,但是因为静态导入使得类方法和类变量的定义位置变得模糊,所以加大人员阅读、理解代码的难度。
4)静态导入的优劣
静态导入的好处是我们在某一处如果需要频繁的使用某一个静态类的静态域或属性,静态导入特性可以为我们省掉很多的代码,但同时也带来了模糊性。
注:如果你打算使用J2SE5提供的新特性--静态导入,那么推荐你在导入时不要使用通配符,而是使用完整的静态类名,这样做的好处时,可以很方便的追查到静态域或属性的出处,方便他人阅读和跟踪代码。
使用静态导入的原则是:不要在应用程序中普遍使用静态导入