最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Java編程中的synthetic關(guān)鍵字

 更新時(shí)間:2017年09月14日 16:59:30   投稿:mengwei  
這篇文章主要介紹了淺談Java編程中的synthetic關(guān)鍵字的相關(guān)內(nèi)容,包括其簡(jiǎn)單的介紹和實(shí)例,需要的朋友可以了解下。

java synthetic關(guān)鍵字。有synthetic標(biāo)記的field和method是class內(nèi)部使用的,正常的源代碼里不會(huì)出現(xiàn)synthetic field。小穎編譯工具用的就是jad.所有反編譯工具都不能保證完全正確地反編譯class。所以你不能要求太多。

下面我給大家介紹一下synthetic

下面的例子是最常見的synthetic field

Java代碼

class parent {
		public void foo() {
		}
		class inner {
			inner() {
				foo();
			}
		}
	}

非static的inner class里面都會(huì)有一個(gè)this$0的字段保存它的父對(duì)象。編譯后的inner class 就像下面這樣:
Java代碼

class parent$inner{
	synthetic parent this$0;
	parent$inner(parent this$0)
	{
		this.this$0 = this$0;
		this$0.foo();
	}
}

所有父對(duì)象的非私有成員都通過 this$0來訪問。
還有許多用到synthetic的地方。比如使用了assert 關(guān)鍵字的class會(huì)有一個(gè)synthetic static boolean $assertionsDisabled 字段
使用了assert的地方

assert condition;
在class里被編譯成
Java代碼

if(!$assertionsDisabled && !condition){
	throw new AssertionError();
	}

還有,在jvm里,所有class的私有成員都不允許在其他類里訪問,包括它的inner class。在java語言里inner class是可以訪問父類的私有成員的。在class里是用如下的方法實(shí)現(xiàn)的:

Java代碼

class parent{
		private int value = 0;
		synthetic static int access$000(parent obj)
		{
			return value;
		}
	}

在inner class里通過access$000來訪問value字段。
synthetic的概念

According to the JVM Spec: "A class member that does not appear in the source code must be marked using a Synthetic attribute." Also, "The Synthetic attribute was introduced in JDK release 1.1 to support nested classes and interfaces."

I know that nested classes are sometimes implemented using synthetic fields and synthetic contructors, e.g. an inner class may use a synthetic field to save a reference to its outer class instance, and it may generate a synthetic contructor to set that field correctly. I'm not sure if it Java still uses synthetic constructors or methods for this, but I'm pretty sure I did see them used in the past. I don't know why they might need synthetic classes here. On the other hand, something like RMI or java.lang.reflect.Proxy should probably create synthetic classes, since those classes don't actually appear in source code. I just ran a test where Proxy did not create a synthetic instance, but I believe that's probably a bug.

Hmm, we discussed this some time ago back here. It seems like Sun is just ignoring this synthetic attribute, for classes at least, and we should too.

注意上文的第一處黑體部分,一個(gè)類的復(fù)合屬性表示他支持嵌套的類或者接口。

注意上文的第二處黑體部分,說明符合這個(gè)概念就是OO思想中的類的復(fù)合,也就是只要含有其它類的引用即為復(fù)合。

總結(jié)

以上就是本文關(guān)于Java編程中的synthetic關(guān)鍵字的全部?jī)?nèi)容,希望對(duì)大家能有所幫助。感謝大家對(duì)本站的支持。

相關(guān)文章

  • Java實(shí)現(xiàn)無頭雙向鏈表操作

    Java實(shí)現(xiàn)無頭雙向鏈表操作

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)無頭雙向鏈表的基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 8個(gè)Spring事務(wù)失效場(chǎng)景詳解

    8個(gè)Spring事務(wù)失效場(chǎng)景詳解

    相信大家對(duì)Spring種事務(wù)的使用并不陌生,但是你可能只是停留在基礎(chǔ)的使用層面上。今天,我們就簡(jiǎn)單來說下Spring事務(wù)的原理,然后總結(jié)一下spring事務(wù)失敗的場(chǎng)景,并提出對(duì)應(yīng)的解決方案,需要的可以參考一下
    2022-12-12
  • Springboot使用異步請(qǐng)求提高系統(tǒng)的吞吐量詳解

    Springboot使用異步請(qǐng)求提高系統(tǒng)的吞吐量詳解

    這篇文章主要介紹了Springboot使用異步請(qǐng)求提高系統(tǒng)的吞吐量詳解,和同步請(qǐng)求相對(duì),異步不需要等待響應(yīng),隨時(shí)可以發(fā)送下一次請(qǐng)求,如果是同步請(qǐng)求,需要將信息填寫完整,再發(fā)送請(qǐng)求,服務(wù)器響應(yīng)填寫是否正確,再做修改,需要的朋友可以參考下
    2023-08-08
  • JavaSE實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼

    JavaSE實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼

    這篇博客是在學(xué)習(xí)了一部分Java基礎(chǔ)語法之后的練習(xí)項(xiàng)目,通過這個(gè)小項(xiàng)目的練習(xí),對(duì)Java中的類和對(duì)象,抽象類和接口等進(jìn)行熟悉理解。快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java實(shí)現(xiàn)去重的方法詳解

    Java實(shí)現(xiàn)去重的方法詳解

    austin支持兩種去重的類型:N分鐘相同內(nèi)容達(dá)到N次去重和一天內(nèi)N次相同渠道頻次去重,這篇文章就來和大家講講這兩種去重的具體實(shí)現(xiàn),需要的可以參考一下
    2023-06-06
  • Java編程簡(jiǎn)單應(yīng)用

    Java編程簡(jiǎn)單應(yīng)用

    本文主要介紹了三個(gè)簡(jiǎn)單Java小程序———1、HelloWorld(HelloWorld的來源);2、輸出個(gè)人信息3、輸出特殊圖案。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Java中?SLF4J和Logback和Log4j和Logging的區(qū)別與聯(lián)系

    Java中?SLF4J和Logback和Log4j和Logging的區(qū)別與聯(lián)系

    這篇文章主要介紹了Java中?SLF4J和Logback和Log4j和Logging的區(qū)別與聯(lián)系,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考幾種,感興趣的小伙伴可以參考一下
    2022-09-09
  • Idea中mapper注入報(bào)錯(cuò)問題及解決

    Idea中mapper注入報(bào)錯(cuò)問題及解決

    這篇文章主要介紹了Idea中mapper注入報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 解決SpringBoot連接SqlServer出現(xiàn)的問題

    解決SpringBoot連接SqlServer出現(xiàn)的問題

    在嘗試通過SSL與SQL?Server建立安全連接時(shí),如果遇到“PKIX?path?building?failed”錯(cuò)誤,可能是因?yàn)槲茨苷_配置或信任服務(wù)器證書,當(dāng)"Encrypt"屬性設(shè)置為"true"且"trustServerCertificate"屬性設(shè)置為"false"時(shí),要求驅(qū)動(dòng)程序使用安全套接字層(SSL)加密與SQL?Server建立連接
    2024-10-10
  • spring boot 部署為jar包的方法示例

    spring boot 部署為jar包的方法示例

    本篇文章主要介紹了spring boot 部署為jar的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10

最新評(píng)論

余江县| 曲阳县| 城市| 湖口县| 栖霞市| 云浮市| 乌什县| 华蓥市| 蒙山县| 泉州市| 高陵县| 长葛市| 海丰县| 凤冈县| 驻马店市| 宜章县| 岳阳市| 肥乡县| 中宁县| 唐河县| 栾城县| 株洲市| 绥江县| 中西区| 米林县| 林口县| 固阳县| 大悟县| 垫江县| 潜山县| 镇平县| 塔城市| 邓州市| 太白县| 论坛| 繁峙县| 西乡县| 卢氏县| 汉沽区| 临江市| 明光市|