隨筆 - 17  文章 - 49  trackbacks - 0
          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆分類(17)

          隨筆檔案(17)

          相冊

          最新隨筆

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          道虎紋: 靜態(tài)引入 機制

          ?

          管中窺虎

          在學(xué)習(xí) java 1.5 的過程中,我使用了 sun 公布的 tutorial ,這份文檔寫的比較詳盡易明,但是對于想快速了解 tiger 而且具有較好 java 基礎(chǔ)的人來說,大篇幅的英文文檔是比較耗時間和非必需的,所以我將會歸納這份文檔的主要內(nèi)容,在保證理解的底線上,盡力減少閱讀者需要的時間。

          ?

          在以下地址可以進入各新增語言特色介紹以及下載相關(guān)文檔(若有)。

          http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html

          ?

          2006 8 17 星期四

          Static import

          ?

          要使用一個類的靜態(tài)成員,就要添加上類的名稱,比如:

          double ?r? = ?Math.cos(Math.PI? * ?theta);

          // theta是一個數(shù)值變量,不是外部static?成員,原文并未注明。

          為了擺脫這些類名,有些程序員會把靜態(tài)成員放到一個接口里然后去實現(xiàn)這個接口,這個可不好。實際上,這樣做已經(jīng)糟糕到有幸成為了反模式:

          Constant Interface Antipattern 。(參加 Effective java Item 17 一個類用別的類的靜態(tài)成員是實現(xiàn)的細節(jié),而當(dāng)這個類實現(xiàn)這樣的接口時,這個接口就成為了這個類的接口的一部分,而實現(xiàn)細節(jié)是不應(yīng)該漏入到 public 的接口中。

          static import 可以讓一個類可以不需要指定類名地使用靜態(tài)成員,而且不需繼承額外的接口,它引入了這些成員,可以單獨地或者全體引入:

          import ? static ?java.lang.Math.PI;

          import ? static ?java.lang.Math. * ;

          然后就可以簡潔地使用它們:

          ?

          double ?r? = ?cos(PI? * ?theta);

          ?

          static import 和以前的 import 類似, import 從包里引入 class, static import 從類里引入成員。

          又到了經(jīng)典一問:何時該用這個新特色?

          要很謹慎地使用!只有當(dāng)你不用它就被迫要么聲明外部 static 成員的本地副本要么就墮落到那個反模式中的時候,你才應(yīng)該用它,換言之,當(dāng)你需要頻繁地使用某一兩個類的靜態(tài)成員時才應(yīng)該使用 static import 。濫用的后果就是讓你的代碼可讀性變差,命名空間被大量的引入的靜態(tài)成員所污染。若干星期后,連你自己都讀得不明不白。而且如果只是用得到其中的一兩個成員,就不要用批量的引入了。

          ?

          posted on 2006-08-17 18:10 Ye Yiliang 閱讀(1150) 評論(4)  編輯  收藏 所屬分類: Java

          FeedBack:
          # re: 第五道虎紋:靜態(tài)引入機制 2006-08-17 18:37 escout
          這種用法在.net2.0之中好像就有了  回復(fù)  更多評論
            
          # re: 第五道虎紋:靜態(tài)引入機制 2006-08-17 19:00 Ye Yiliang
          好的語法元素,總會在主流語言間互相學(xué)習(xí)和復(fù)制,呵呵@escout
            回復(fù)  更多評論
            
          # re: 第五道虎紋:靜態(tài)引入機制 2006-08-17 19:24 oliver456
          你寫的一系列的關(guān)于java tiger 的新語法、特征寫得很好,我在大四的時候,考java認證的時候,就是考的scjp5.0(里面全java tiger的新語法等 ),現(xiàn)在又一次學(xué)習(xí)!不過你還是要進一步深入~~~~  回復(fù)  更多評論
            
          # re: 第五道虎紋:靜態(tài)引入機制 2006-08-17 20:03 Ye Yiliang
          嗯,的確還是很淺薄,而且也不是自己寫的,是翻譯和一些簡化 :p@oliver456
            回復(fù)  更多評論
            
          主站蜘蛛池模板: 沙湾县| 绵阳市| 正阳县| 高密市| 通许县| 木兰县| 体育| 东至县| 延川县| 景谷| 隆德县| 萨迦县| 云安县| 昌乐县| 廊坊市| 南和县| 邛崃市| 洞口县| 洛宁县| 白水县| 宁海县| 临泽县| 桃江县| 西青区| 腾冲县| 城步| 饶阳县| 莲花县| 高州市| 曲麻莱县| 星子县| 章丘市| 册亨县| 府谷县| 格尔木市| 绵阳市| 芦山县| 汝阳县| 南汇区| 临澧县| 阳城县|