今天在学习Activiti in action书中有发现有一段单元测试的代码使用了assertNotNull()函数,它是org.juint.Assert类的一个静态成员函数。但是为什么可以直接使用assertNotNull()而不是写成Assert.assertNotNull()呢?思考了一阵没有得出答案,打开源码查看,发现作者使用了静态导入,意识到这是我的一个java盲区,所以简单学习了一下,总结如下:
import static 静态导入是JDK1.5的新特性。静态导入的格式如下:
import static com...ClassName.*
相对于常规的import,import static在完整的类限定名后添加了.*,表示导入这个类的静态方法。当然,也可以只导入类的某个静态成员变量或方法,把*换成变量或方法名就可以了。再导入后可以直接使用方法名调用静态方法,而不必用ClassName.方法名的方式调用。
很简单,就不敲代码了。以下是一些需要注意的地方:
必须是import static,不能是static import;
提防static成员重名的情况,比如静态导入Integer类和Long类的静态成员,引用MAX_VALUE会导致一个编译错误,因为Integer和Long都有MAX_VALUE静态成员。