第
五
道虎紋:
靜態引入
機制
?
管中窺虎
在學習
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 閱讀(1148)
評論(4) 編輯 收藏 所屬分類:
Java