<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編程經驗談
    主站蜘蛛池模板: 久久精品私人影院免费看| 国产成人亚洲精品无码AV大片| jizz中国免费| mm1313亚洲国产精品美女| 51在线视频免费观看视频| 亚洲综合色自拍一区| 国产成人精品免费视频大全| 亚洲精品国产福利一二区| 亚洲欧洲精品视频在线观看| 99久久国产免费中文无字幕| 亚洲2022国产成人精品无码区| a级毛片黄免费a级毛片| 久久久久亚洲AV无码专区首| 日本视频在线观看永久免费| 亚洲自偷自偷精品| 亚洲视频免费在线播放| 国产精品亚洲精品青青青| 在线观看成人免费| 美景之屋4在线未删减免费| 亚洲毛片av日韩av无码| 国产精品99爱免费视频| 国产AV无码专区亚洲AV男同| 免费A级毛片在线播放| 亚洲另类春色国产精品| 天堂在线免费观看中文版| 国产午夜亚洲精品不卡| 亚洲精品老司机在线观看| 国产精品偷伦视频免费观看了| 亚洲gv猛男gv无码男同短文| 99久久久国产精品免费牛牛四川| 亚洲最大成人网色香蕉| 四虎永久精品免费观看| 国产成人无码免费看片软件| 亚洲制服中文字幕第一区| 暖暖免费高清日本中文| 一级特黄a大片免费| 亚洲黄网站wwwwww| 国产国产人免费人成免费视频| GOGOGO免费观看国语| 亚洲最大黄色网站| 国产99视频免费精品是看6|