首页 理论教育 静态成员的引入

静态成员的引入

时间:2022-02-28 理论教育 版权反馈
【摘要】:静态成员引入就是使用import static声明,对引入类或接口的静态成员在使用上如同在本类使用一样。因此,在进行静态成员引入的时候,可能会出现“两个或多个语句引入同名的静态成员”的情况。由于静态成员的引入,对于那些直接引用名字的静态成员,在编译期间,它们的名字都会被编译器打回原型。因此,在性能方面,静态成员引入没有任何影响。但是直接引用静态成员名字可能会造成一些维护方面的问题。

4.6.4 静态成员的引入

静态成员引入就是使用import static声明,对引入类或接口的静态成员在使用上如同在本类使用一样。import static声明有两种格式:

格式1:import static 包名.类或接口名.静态成员名;

此格式可当前整个源文件的范围内,用简单名称访问指定的静态成员,即精确引入。

格式2:import static 包名.类或接口名.*;

此格式可在当前整个源文件的范围内,用简单名称访问指定类型中的所有静态成员,即按需引入。例如:

img233

使用import static语句,可以引入一个类里的一切被static修饰的东西,包括变量、常量、方法和内部类。例如:

img234

img235

不同的类(接口)可以包括名称相同的静态成员。因此,在进行静态成员引入的时候,可能会出现“两个或多个语句引入同名的静态成员”的情况。编译器的处理方法和4.6.3节处理同名类的方法相同。

注意,如果两个同名的静态成员一个是属性,而另一个是方法,那么因为使用时的写法有差异,不会造成任何的冲突。

由于静态成员的引入,对于那些直接引用名字的静态成员,在编译期间,它们的名字都会被编译器打回原型。因此,在性能方面,静态成员引入没有任何影响。但是直接引用静态成员名字可能会造成一些维护方面的问题。去掉静态成员前面的类型名,固然有助于在频繁调用时显得简洁,但是同时也失去了关于“这个东西在哪里定义”的提示信息,增加了阅读理解的麻烦。如果引入的来源很著名(比如java.lang.Math),或者来源的总数比较少,这个问题并不严重;但是,在不属于这两种情况下时,基本上就不是可以忽略的问题了。

总之,静态成员引入机制,可以用一种更简单的方式来访问类和接口的静态成员。不过,使用这一机制并不是没有代价的,在使用不当的时候可能给维护工作带来一定的困扰。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈