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

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

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

    七段

    無論怎樣,請讓我先感謝一下國家。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      35 Posts :: 2 Stories :: 7 Comments :: 0 Trackbacks
    Less Code == [Less Bugs,Better Readability,Less programmers to hire, Less organizational communication costs, Less maitain cost]
    Less Code != [Higher Productivity,Better Performance]
    1, import static
    remove duplicated namespace
    what does it do?
    package com.toolbox.lang;
    public class ClassWithStaticMember {
      public static final String name="value";
      public static String say() {
        return "111";
      }
      public static String say(String msg) {
        return msg;
      }
    }
    package com.toolbox.lang;
    import static com.toolbox.lang.ClassWithStaticMember.say;
    import static com.toolbox.lang.ClassWithStaticMember.name;
    public class Test {
      public static void main(String[] args) {
        System.out.println(say());
        System.out.println(say(name));
      }
    }
    

    import同名的member
    意味著不同方法簽名的member都會import, e.g. say() and say(String msg)
    const #45 = Method      #46.#48;        //  com/toolbox/lang/ClassWithStaticMember.say:()Ljava/lang/String;
    const #46 = class       #47;    //  com/toolbox/lang/ClassWithStaticMember
    const #47 = Asciz       com/toolbox/lang/ClassWithStaticMember;
    const #48 = NameAndType #49:#38;//  say:()Ljava/lang/String;
    const #49 = Asciz       say;
    const #62 = Method      #46.#63;        //  com/toolbox/lang/ClassWithStaticMember.say:(Ljava/lang/String;)Ljava/lang/String;
    const #63 = NameAndType #49:#64;//  say:(Ljava/lang/String;)Ljava/lang/String;

    copy primitive type value
    意味著編譯后,Test class中static import的String, int 等是值的寫入class中,不會在去引用ClassWithStaticMember
       43:  ldc     #55; //String value
       45:  invokestatic    #57; //Method com/toolbox/lang/ClassWithStaticMember.say:(Ljava/lang/String;)Ljava/lang/String;
       48:  invokevirtual   #50; //Method java/io/PrintStream.println:(Ljava/lang/String;)V

    when to use it?
    Do it when frequent access to static members from one or two classes
    Not Do it when has naming conflict or complicated class body, otherwise, make you confuse with so many polluting namespace

    2, apply lanuage feature
    2.1 String contact
    String s = "a" + "b";
    compile into:
    const #15 = Asciz       ([Ljava/lang/String;)V;
    const #16 = String      #17;    //  ab
    if String constance + String constance
    直接編譯成結果寫入class
    else
    使用StringBuilder.append
    So always use "+" unless you need to use StringBuffer or other specific class
    3, inner class {{}}
      List<String> list = new ArrayList<String>() {{add("data1");add("data2");}};
    4, use PMD to find and remove duplicated code

    已有 0 人發表留言,猛擊->>這里<<-參與討論


    JavaEye推薦




    文章來源:http://sevenduan.javaeye.com/blog/504911
    posted on 2009-10-31 14:49 sevenduan 閱讀(307) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 欧洲精品成人免费视频在线观看| A级毛片高清免费视频在线播放| 0588影视手机免费看片| 国产亚洲一区二区三区在线| 特黄特色的大片观看免费视频| 国产精品无码一二区免费| 亚洲欧美日韩一区二区三区 | 影音先锋在线免费观看| 亚洲日本人成中文字幕| 18禁超污无遮挡无码免费网站国产 | 亚洲精品资源在线| 成人免费的性色视频| 日本亚洲精品色婷婷在线影院 | 日韩大片免费观看视频播放| 免费一级一片一毛片| 黄页视频在线观看免费| 亚洲伊人成无码综合网| 日本高清不卡aⅴ免费网站| 亚洲AV无码1区2区久久| 91九色老熟女免费资源站| 国产精品亚洲精品观看不卡| 日本午夜免费福利视频| a级毛片免费观看在线| 久久亚洲精品视频| 国内精自视频品线六区免费| 亚洲国产精品日韩av不卡在线| 午夜国产羞羞视频免费网站| 黄桃AV无码免费一区二区三区| 亚洲春色在线视频| 无码国产精品久久一区免费| 国产成人亚洲综合在线| 国产精品亚洲成在人线| 毛片视频免费观看| 最近更新免费中文字幕大全| 亚洲精品中文字幕无乱码| 精品久久免费视频| 国产午夜无码片免费| 亚洲国产人成在线观看| 无码专区一va亚洲v专区在线| 国产成人免费视频| 亚洲AV无码专区在线观看成人 |