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

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

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

    posts - 72, comments - 66, trackbacks - 0, articles - 0

    有關 this$0 問題

    Posted on 2009-01-06 12:24 Fingki.li 閱讀(3465) 評論(0)  編輯  收藏 所屬分類: About development
    有synthetic標記的field和method是class內部使用的,正常的源代碼里不會出現synthetic field。小穎編譯工具用的就是jad.所有反編譯工具都不能保證完全正確地反編譯class。所以你不能要求太多。
    下面我給大家介紹一下synthetic

    下面的例子是最常見的synthetic field
    class parent
    {
    public void foo()
    {
    }
    class inner
    {
    inner()
    {
    foo();
    }
    }
    }
    非static的inner class里面都會有一個this$0的字段保存它的父對象。編譯后的inner class 就像下面這樣:
    class parent$inner
    {
    synthetic parent this$0;
    parent$inner(parent this$0)
    {
    this.this$0 = this$0;
    this$0.foo();
    }
    }
    所有父對象的非私有成員都通過 this$0來訪問。

    還有許多用到synthetic的地方。比如使用了assert 關鍵字的class會有一個
    synthetic static boolean $assertionsDisabled 字段
    使用了assert的地方
    assert condition;
    在class里被編譯成
    if(!$assertionsDisabled && !condition)
    {
    throw new AssertionError();
    }

    還有,在jvm里,所有class的私有成員都不允許在其他類里訪問,包括它的inner class。在java語言里inner class是可以訪問父類的私有成員的。在class里是用如下的方法實現的:
    class parent
    {
    private int value = 0;
    synthetic static int access$000(parent obj)
    {
    return value;
    }
    }
    在inner class里通過access$000來訪問value字段。

    摘自:
    http://www.cjsdn.net/post/print?bid=1&id=130784
    主站蜘蛛池模板: 久久国产免费福利永久| 中国性猛交xxxxx免费看| 亚洲一本综合久久| 国产免费区在线观看十分钟| 亚洲精品无码激情AV| 一级毛片免费毛片毛片| 欧洲一级毛片免费| 亚洲最新在线视频| 成人免费ā片在线观看| 国产AV无码专区亚洲AV漫画| 在线免费观看h片| 亚洲av福利无码无一区二区| 美女又黄又免费的视频| 亚洲精品和日本精品| A毛片毛片看免费| 亚洲一区二区三区四区在线观看 | aa级毛片毛片免费观看久| 亚洲精品乱码久久久久久蜜桃不卡| 成人国产精品免费视频| 亚洲国产成人久久精品动漫| 在线永久看片免费的视频| 亚洲日本乱码卡2卡3卡新区| 国产一区二区三区在线免费观看| 免费大片av手机看片| 国产亚洲精品资源在线26u| **俄罗斯毛片免费| 亚洲成AV人影片在线观看| 成人亚洲综合天堂| 久久精品成人免费观看| 亚洲中文字幕乱码熟女在线| 亚洲精品岛国片在线观看| 久久香蕉国产线看免费| 亚洲熟妇久久精品| 亚洲综合精品香蕉久久网| 在线看片v免费观看视频777| 国产成人综合亚洲绿色| 日本免费人成黄页在线观看视频| 中出五十路免费视频| 亚洲fuli在线观看| 亚洲香蕉成人AV网站在线观看| 一级毛片完整版免费播放一区|