<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 操美女视频免费网站| 在线观看免费播放av片| 最近免费2019中文字幕大全| 国产亚洲精品免费视频播放| 日本特黄特色AAA大片免费| 免费精品一区二区三区在线观看 | 亚洲一级Av无码毛片久久精品| 亚洲а∨精品天堂在线| 免费理论片51人人看电影| 亚洲精品久久久久无码AV片软件| 在线天堂免费观看.WWW| 亚洲精品第一综合99久久| 在线看片免费不卡人成视频| 亚洲最大av资源站无码av网址| 毛片免费全部免费观看| 亚洲狠狠婷婷综合久久| 男人的天堂亚洲一区二区三区| 国产在亚洲线视频观看| 亚洲国产一级在线观看| 99精品视频免费| 77777_亚洲午夜久久多人| 皇色在线视频免费网站| 亚洲AV无码AV吞精久久| 亚洲色欲久久久久综合网| 免费无码又爽又刺激一高潮| 91天堂素人精品系列全集亚洲| 亚洲精品动漫免费二区| 精品无码专区亚洲| 亚洲色精品88色婷婷七月丁香| 国产精品偷伦视频观看免费| 亚洲嫩草影院在线观看| 国产区卡一卡二卡三乱码免费| 香蕉视频在线观看免费| 亚洲av综合avav中文| 欧美好看的免费电影在线观看| 亚洲精品国产首次亮相 | 伊人久久亚洲综合| 精品国产免费人成电影在线观看| 国产人成亚洲第一网站在线播放| 亚洲v国产v天堂a无码久久| 精品一卡2卡三卡4卡免费视频 |