第
五
道虎纹:
静态引入
机制
管中窥虎
在学习
java 1.5
的过程中,我使用了
sun
公布的
tutorial
,这份文档写的比较详尽易明,但是对于想快速了解
tiger
而且具有较好
java
基础的人来说,大篇幅的英文文档是比较耗时间和非必需的,所以我将会归纳这份文档的主要内容,在保证理解的底线上,尽力减少阅读者需要的时间。
在以下地址可以进入各新增语言特色介绍以及下载相关文档(若有)。
http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html
2006
年
8
月
17
日
星期四
Static import
要使用一个类的静态成员,就要添加上类的名称,比如:
double
r
=
Math.cos(Math.PI
*
theta);
//
theta是一个数值变量,不是外部static 成员,原文并未注明。
为了摆脱这些类名,有些程序员会把静态成员放到一个接口里然后去实现这个接口,这个可不好。实际上,这样做已经糟糕到有幸成为了反模式:
Constant Interface Antipattern
。(参加
Effective java Item 17
)
一个类用别的类的静态成员是实现的细节,而当这个类实现这样的接口时,这个接口就成为了这个类的接口的一部分,而实现细节是不应该漏入到
public
的接口中。
而
static import
可以让一个类可以不需要指定类名地使用静态成员,而且不需继承额外的接口,它引入了这些成员,可以单独地或者全体引入:
import
static
java.lang.Math.PI;
import
static
java.lang.Math.
*
;
然后就可以简洁地使用它们:
double
r
=
cos(PI
*
theta);
static import
和以前的
import
类似,
import
从包里引入
class,
而
static import
从类里引入成员。
又到了经典一问:何时该用这个新特色?
要很谨慎地使用!只有当你不用它就被迫要么声明外部
static
成员的本地副本要么就堕落到那个反模式中的时候,你才应该用它,换言之,当你需要频繁地使用某一两个类的静态成员时才应该使用
static import
。滥用的后果就是让你的代码可读性变差,命名空间被大量的引入的静态成员所污染。若干星期后,连你自己都读得不明不白。而且如果只是用得到其中的一两个成员,就不要用批量的引入了。
posted on 2006-08-17 18:10
Ye Yiliang 阅读(1141)
评论(4) 编辑 收藏 所属分类:
Java