1700438927
编写高质量代码:改善Java程序的151个建议 建议10:不要在本类中覆盖静态导入的变量和方法
1700438928
1700438929
如果一个类中的方法及属性与静态导入的方法及属性重名会出现什么问题呢?我们先来看一个正常的静态导入,代码如下:
1700438930
1700438931
import static java.lang.Math.PI;
1700438932
1700438933
import static java.lang.Math.abs;
1700438934
1700438935
public class Client{
1700438936
1700438937
public static void main(String[]args){
1700438938
1700438939
System.out.println(“PI=”+PI);
1700438940
1700438941
System.out.println(“abs(100)=”+abs(-100));
1700438942
1700438943
}
1700438944
1700438945
}
1700438946
1700438947
很简单的例子,打印出静态常量PI值,计算-100的绝对值。现在的问题是:如果我们在Client类中也定义了PI常量和abs方法,会出现什么问题?代码如下:
1700438948
1700438949
import static java.lang.Math.PI;
1700438950
1700438951
import static java.lang.Math.abs;
1700438952
1700438953
public class Client{
1700438954
1700438955
//常量名与静态导入的PI相同
1700438956
1700438957
public fnal static String PI=“祖冲之”;
1700438958
1700438959
//方法名与静态导入的相同
1700438960
1700438961
public static int abs(int abs){
1700438962
1700438963
return 0;
1700438964
1700438965
}
1700438966
1700438967
public static void main(String[]args){
1700438968
1700438969
System.out.println(“PI=”+PI);
1700438970
1700438971
System.out.println(“abs(100)=”+abs(-100));
1700438972
1700438973
}
1700438974
1700438975
}
[
上一页 ]
[ :1.700438926e+09 ]
[
下一页 ]