1700438850
1700438851
return 4*PI*r*r;
1700438852
1700438853
}
1700438854
1700438855
}
1700438856
1700438857
静态导入的作用是把Math类中的PI常量引入到本类中,这会使程序更简单,更容易阅读,只要看到PI就知道这是圆周率,不用每次都要把类名写全了。但是,滥用静态导入会使程序更难阅读,更难维护。静态导入后,代码中就不用再写类名了,但是我们知道类是“一类事物的描述”,缺少了类名的修饰,静态属性和静态方法的表象意义可以被无限放大,这会让阅读者很难弄清楚其属性或方法代表何意,甚至是哪一个类的属性(方法)都要思考一番(当然,IDE友好提示功能是另说),特别是在一个类中有多个静态导入语句时,若还使用了*(星号)通配符,把一个类的所有静态元素都导入进来了,那简直就是恶梦。我们来看一段例子:
1700438858
1700438859
import static java.lang.Double.*;
1700438860
1700438861
import static java.lang.Math.*;
1700438862
1700438863
import static java.lang.Integer.*;
1700438864
1700438865
import static java.text.NumberFormat.*;
1700438866
1700438867
public class Client{
1700438868
1700438869
//输入半径和精度要求,计算面积
1700438870
1700438871
public static void main(String[]args){
1700438872
1700438873
double s=PI*parseDouble(args[0]);
1700438874
1700438875
NumberFormat nf=getInstance();
1700438876
1700438877
nf.setMaximumFractionDigits(parseInt(args[1]));
1700438878
1700438879
formatMessage(nf.format(s));
1700438880
1700438881
}
1700438882
1700438883
//格式化消息输出
1700438884
1700438885
public static void formatMessage(String s){
1700438886
1700438887
System.out.println(“圆面积是:”+s);
1700438888
1700438889
}
1700438890
1700438891
}
1700438892
1700438893
就这么一段程序,看着就让人火大:常量PI,这知道,是圆周率;parseDouble方法可能是Double类的一个转换方法,这看名称也能猜测到。那紧接着的getInstance方法是哪个类的?是Client本地类?不对呀,没有这个方法,哦,原来是NumberFormate类的方法,这和formateMessage本地方法没有任何区别了—这代码也太难阅读了,非机器不可阅读。
1700438894
1700438895
所以,对于静态导入,一定要遵循两个规则:
1700438896
1700438897
不使用*(星号)通配符,除非是导入静态常量类(只包含常量的类或接口)。
1700438898
1700438899
方法名是具有明确、清晰表象意义的工具类。
[
上一页 ]
[ :1.70043885e+09 ]
[
下一页 ]