<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
    主站蜘蛛池模板: 1000部羞羞禁止免费观看视频| aa午夜免费剧场| 97在线视频免费播放| 亚洲乱码日产一区三区| 黄 色一级 成 人网站免费| 亚洲男女内射在线播放| 国产精品偷伦视频免费观看了| 亚洲国产成人VA在线观看| 无遮挡免费一区二区三区 | 国产亚洲精品成人久久网站| 夫妻免费无码V看片| 亚洲AV无码专区国产乱码不卡| 国产片免费福利片永久| 一级成人a免费视频| 亚洲精品~无码抽插| 久久久久久国产精品免费无码 | 好大好深好猛好爽视频免费| 亚洲乱码国产乱码精华| 免费一级毛片在播放视频| 国产精品九九久久免费视频| 亚洲bt加勒比一区二区| 国内精品免费麻豆网站91麻豆 | 免费精品久久久久久中文字幕| 久久久久亚洲AV无码专区网站| 三年片在线观看免费西瓜视频| 日木av无码专区亚洲av毛片| 毛片a级三毛片免费播放| 免费的黄网站男人的天堂| 国产精品亚洲аv无码播放| 精品福利一区二区三区免费视频| 午夜在线a亚洲v天堂网2019 | 亚洲国产精彩中文乱码AV| 久久久久久精品成人免费图片| 亚洲国产欧美日韩精品一区二区三区| 亚洲国产主播精品极品网红| 一区二区三区四区免费视频| 亚洲成AV人片在WWW| 国精无码欧精品亚洲一区| 免费无码黄十八禁网站在线观看| 男女猛烈无遮掩视频免费软件| 亚洲激情在线观看|