1.使用说明
- 静态导入是JDK5.0引入的新特性
- 要使用静态成员(方法和变量)我们必须给出提供这个静态成员的类,使用静态导入可以使被导入类的静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。
2.Demo
比如先在一个包中定义一个这样的类:
package com.example.learnjava;
public class Common
{
public static final int AGE = 10;
public static void output()
{
System.out.println("Hello World!");
}
}
使用一般导入
在另一个包中使用时,如果不用静态导入,是这样用的:
前面加入了导入语句,将Common类导入,使用其中的静态成员变量和静态方法时需要加上类名。
package com.example.learnjava2;
import com.example.learnjava.Common;
public class StaticImportTest
{
public static void main(String[] args)
{
int a = Common.AGE;
System.out.println(a);
Common.output();
}
}
使用静态导入
静态导入的语法是:
- import static 包名.类名.静态成员变量;
- import static 包名.类名.静态成员函数;
注意导入的是成员变量和方法名
如前面的程序使用静态导入后:
package com.example.learnjava2;
import static com.example.learnjava.Common.AGE;
import static com.example.learnjava.Common.output;
public class StaticImportTest
{
public static void main(String[] args)
{
int a = AGE;
System.out.println(a);
output();
}
}
3.优缺点
优点
减少字符输入量,提高代码的可阅读性,以便更好地理解程序。
举一个例子来说:
import static java.lang.Math.PI;
public class MathUtils{
// 计算圆面积
public static double calCircleArea(double r){
return PI * r * r;
}
// 计算球面积
public static double calBallArea(double r){
return 4 * PI * r * r;
}
}
缺点
滥用静态导入会使程序更难阅读,更难维护。静态导入后,代码中就不用再写类名了,但是我们知道类是“一类事物的描述”,缺少了类名的修饰,静态属性和静态方法的表象意义可以被无限放大,这会让阅读者很难弄清楚其属性或方法代表何意,甚至是哪一个类的属性(方法)都要思考一番,特别是在一个类中有多个静态导入语句时,若还使用了*通配符,把一个类的所有静态元素都导入进来了,那简直就是恶梦。