<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無為

    無為則可為,無為則至深!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
    在J2SE?5.0版本中,java語言引入了很多新的特性,本文將主要介紹static?import。static?import主要解決的問題是方便開發人員創建和使用全局的常量以及靜態的方法。要使用這一新的特性您應該首先從java.sun.com下載最新的j2sdk?5.0。?

    ????在《effective?java》中作者曾經談到在接口中定義常量是很糟糕的一種使用方法,我們應該始終使用接口來定義類型。但是在實際開發工作中還是有很多人這樣使用接口,他們這樣做的原因是這樣定義常量使用起來很方便。例如如下定義方式:
    ???public?interface?BadIrrationalConstants?{
    ?????public?static?final?double?SQRT_TWO?=?1.414;
    ?????public?static?final?double?SQRT_THREE?=?1.732;
    ???}

    ?public?interface?BadTranscendentalConstants?{
    ?????public?static?final?double?PI?=?3.14159;
    ?????public?static?final?double?E?=?2.71828;}
    ???

    ????如果你想在自己的類中使用這些接口中定義的常量的時候,那么你必須要實現這些接口。比如
    ?????public?class?BadUseOfConstants?implements
    ?????BadTranscendentalConstants,?BadIrrationalConstants?{

    ????public?static?double?sinPiOverFour()?{
    ???????return?SQRT_TWO?/?2;
    ?????}

    ?????public?static?void?main(String[]?args)?{
    ???????System.out.println("Pi?is?approximately?"?+?PI);
    ???????System.out.println("The?sin?of?Pi/4?is?about?"?+
    ?????????sinPiOverFour());
    ?????}
    ???}
    ????這樣這些常量就變成你的類的一部分了,如果這個類不是final的話,其它的類繼承了這個類又使得它繼承了這些常量,但是這也許不是用戶需要的結果。

    ????針對這樣的情況,我們可以這樣做,那就是在一個類中定義這些常量,使用的時候可以通過ClassName.variableName來訪問他們。例如
    package?staticEx;
    ???public?class?IrrationalConstants?{
    ?????public?static?final?double?SQRT_TWO?=?1.414;
    ?????public?static?final?double?SQRT_THREE?=?1.732;
    ???}
    package?staticEx;
    ???public?class?TranscendentalConstants?{
    ?????public?static?final?double?PI?=?3.14159;
    ?????public?static?final?double?E?=?2.71828;
    ???}

    ????現在J2SE?5.0提供了靜態導入的功能,你只需要在import關鍵字后面寫一個static關鍵字就可以直接使用類中定義的常量了,例如
    ???import?static?staticEx.IrrationalConstants.SQRT_TWO;
    ???import?static?staticEx.IrrationalConstants.SQRT_THREE;
    ???import?static?staticEx.TranscendentalConstants.PI;

    ????當然你也可以使用.*的格式,例如
    import?static?staticEx.IrrationalConstants.*;的格式??
    package?staticEx;
    ???import?static?staticEx.IrrationalConstants.SQRT_TWO;
    ???import?static?staticEx.IrrationalConstants.SQRT_THREE;
    ???import?static?staticEx.TranscendentalConstants.PI;
    ???public?class?ConstantsWithStaticImport?{
    ?????public?static?double?sinPiOverFour()?{
    ???????return?SQRT_TWO?/?2;
    ?????}
    ?????public?static?void?main(String[]?args)?{
    ???????System.out.println("Pi?is?approximately?"?+?PI);
    ???????System.out.println("The?sin?of?Pi/4?is?about?"?+
    ?????????sinPiOverFour());
    ?????}
    ???}

    ????運行該程序會得到
    ???Pi?is?approximately?3.14159
    ???The?sin?of?Pi/4?is?about?0.707

    ????在這里提醒大家一下,如果你過多的使用.*的樣式,那么可能會給程序的可讀性帶來負面的影響。因為你很難看出這個變量在哪里定義的。

    ????對常量定義是如此,對靜態方法的使用也適用。例如下面的例子
    ??package?staticEx;

    ???public?class?IrrationalConstants2?{
    ?????public?static?final?double?SQRT_TWO?=?1.414;
    ?????public?static?final?double?SQRT_THREE?=?1.732;

    ?????public?static?double?sinPiOverFour()?{
    ???????return?SQRT_TWO?/?2;
    ?????}
    ???}
    package?staticEx;

    ???import?static?staticEx.IrrationalConstants2.*;
    ???import?static?staticEx.TranscendentalConstants.*;

    ???public?class?ConstantsWithStaticImport2?{

    ?????public?static?void?main(String[]?args)?{
    ???????System.out.println("Pi?is?approximately?"?+?PI);
    ???????System.out.println("The?sin?of?Pi/4?is?about?"?+
    ?????????sinPiOverFour());
    ?????}
    ???}
    ????在ConstantsWithStaticImport2類中靜態導入IrrationalConstants2后就可以直接使用它的靜態方法sinPiOverFour()了。

    ????以上簡單的介紹了如何使用static?import,您可以參考一下連接獲得更多的介紹:
    http://java.sun.com/developer/JDCTechTips/2004/tt1005.html
    http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html

    凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
    、轉載請注明來處和原文作者。非常感謝。

    posted on 2006-06-11 12:50 草兒 閱讀(142) 評論(0)  編輯  收藏 所屬分類: Java編程經驗談
    主站蜘蛛池模板: aa在线免费观看| 一级毛片在线免费看| 麻豆国产入口在线观看免费| 亚洲日本国产精华液| 久久精品国产免费观看| 亚洲国产成人久久三区| 免费福利网站在线观看| 亚洲日韩AV一区二区三区中文 | 色欲aⅴ亚洲情无码AV| 在线观看免费宅男视频| 国产av无码专区亚洲av毛片搜| 四虎永久在线精品免费影视| 日韩精品视频在线观看免费| 中文字幕精品亚洲无线码一区应用| 中文字幕a∨在线乱码免费看| 亚洲级αV无码毛片久久精品| 亚洲免费在线播放| 亚洲视频一区二区三区四区| 免费看片免费播放| 香蕉免费看一区二区三区| 亚洲国产精品久久久久婷婷老年| 国产免费不卡视频| 亚洲爆乳大丰满无码专区| 久久精品国产亚洲7777| 国产在线精品免费aaa片| 亚洲第一精品电影网| 在线免费观看国产视频| 成人免费无码H在线观看不卡| 激情内射亚洲一区二区三区| 日韩精品视频免费在线观看| 国产99久久久久久免费看| 91久久亚洲国产成人精品性色| 麻豆国产精品入口免费观看| 中文无码日韩欧免费视频| 亚洲性色高清完整版在线观看| 青青草国产免费久久久91| 亚洲精品国产日韩无码AV永久免费网 | 亚洲H在线播放在线观看H| 亚洲AV网站在线观看| 国产拍拍拍无码视频免费| 亚洲日韩一区精品射精|