Java JDK11基于嵌套的訪問(wèn)控制的實(shí)現(xiàn)
Java(和其他語(yǔ)言)通過(guò)內(nèi)部類(lèi)支持嵌套類(lèi)。要使其正常工作,需要編譯器執(zhí)行一些技巧。這是一個(gè)例子:
public class Outer { private int outerInt; class Inner { public void printOuterInt() { System.out.println("Outer int = " + outerInt); } } }
在執(zhí)行編譯之前,編譯器會(huì)修改它以創(chuàng)建類(lèi)似的東西:
public class Outer { private int outerInt; public int access$000() { return outerInt; } } class Inner$Outer { Outer outer; public void printOuterInt() { System.out.println("Outer int = " + outer.access$000()); } }
雖然從邏輯上講,內(nèi)部類(lèi)是與外部類(lèi)相同的代碼實(shí)體的一部分,但它被編譯為一個(gè)單獨(dú)的類(lèi)。因此,它需要編譯器創(chuàng)建合成橋接方法,以提供對(duì)外部類(lèi)的私有字段的訪問(wèn)。
這個(gè)JEP引入了巢的概念,其中同一巢的兩個(gè)成員(我們的例子中的外部和內(nèi)部)是同窩。為類(lèi)文件格式NestHost和NestMembers定義了兩個(gè)新屬性。這些更改對(duì)于支持嵌套類(lèi)并編譯為字節(jié)碼的其他語(yǔ)言非常有用。
此功能為java.lang.Class引入了三個(gè)新方法:
- Class getNestHost()
- Class[] getNestMembers()
- boolean isNestmateOf(Class)
此功能還需要更改Java虛擬機(jī)規(guī)范(JVMS),特別是第5.4.4節(jié)“訪問(wèn)控制”。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決Spring Security 用戶帳號(hào)已被鎖定問(wèn)題
這篇文章主要介紹了解決Spring Security 用戶帳號(hào)已被鎖定問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01java使用list實(shí)現(xiàn)數(shù)據(jù)庫(kù)的like功能
這篇文章主要介紹了java使用list實(shí)現(xiàn)數(shù)據(jù)庫(kù)的like功能,需要的朋友可以參考下2014-04-04面試官:java ThreadLocal真的會(huì)造成內(nèi)存泄露嗎
ThreadLocal,java面試過(guò)程中的“釘子戶”,在網(wǎng)上也充斥著各種有關(guān)ThreadLocal內(nèi)存泄露的問(wèn)題,本文換個(gè)角度,先思考ThreadLocal體系中的ThreadLocalMap為什么要設(shè)計(jì)成弱引用2021-08-08Java基于Session登錄驗(yàn)證的實(shí)現(xiàn)示例
基于Session的登錄驗(yàn)證方式是最簡(jiǎn)單的一種登錄校驗(yàn)方式,本文主要介紹了Java基于Session登錄驗(yàn)證的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02Fluent Mybatis實(shí)際開(kāi)發(fā)中的優(yōu)勢(shì)對(duì)比
本文給大家介紹如何通過(guò)IQuery和IUpdate定義強(qiáng)大的動(dòng)態(tài)SQL語(yǔ)句,給大家分享Fluent Mybatis實(shí)際開(kāi)發(fā)中的優(yōu)勢(shì)講解,感興趣的朋友一起看看吧2021-08-08利用java、js或mysql計(jì)算高德地圖中兩坐標(biāo)之間的距離
最近因?yàn)楣ぷ鞯男枨?,需要?jì)算出高德地圖中兩個(gè)坐標(biāo)的距離,通過(guò)查找相關(guān)資料發(fā)現(xiàn)了多種實(shí)現(xiàn)的方法,下面這篇文章主要給大家介紹了關(guān)于利用java、js或mysql計(jì)算高德地圖中兩坐標(biāo)之間距離的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-10-10Spring security 自定義過(guò)濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實(shí)例代碼)
這篇文章主要介紹了Spring security 自定義過(guò)濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01