摘要:和其他語言通過內部類支持嵌套類。因此,它需要編譯器創建合成橋接方法,以提供對外部類的私有字段的訪問。這些更改對于支持嵌套類并編譯為字節碼的其他語言非常有用。此功能為引入了三個新方法此功能還需要更改虛擬機規范,特別是第節訪問控制。
Java(和其他語言)通過內部類支持嵌套類。要使其正常工作,需要編譯器執行一些技巧。這是一個例子:
public class Outer { private int outerInt; class Inner { public void printOuterInt() { System.out.println("Outer int = " + outerInt); } } }
在執行編譯之前,編譯器會修改它以創建類似的東西:
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()); } }
雖然從邏輯上講,內部類是與外部類相同的代碼實體的一部分,但它被編譯為一個多帶帶的類。因此,它需要編譯器創建合成橋接方法,以提供對外部類的私有字段的訪問。
這個JEP引入了巢的概念,其中同一巢的兩個成員(我們的例子中的外部和內部)是同窩。為類文件格式NestHost和NestMembers定義了兩個新屬性。這些更改對于支持嵌套類并編譯為字節碼的其他語言非常有用。
此功能為java.lang.Class引入了三個新方法:
Class getNestHost()
Class[] getNestMembers()
boolean isNestmateOf(Class)
此功能還需要更改Java虛擬機規范(JVMS),特別是第5.4.4節“訪問控制”。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73188.html
摘要:到年將提供修復和安全更新。中期版本將每六個月發布一次。將擴展類文件格式以支持新的常量池形式。將提供一個低開銷的數據收集框架,用于對應用程序和進行故障排除。項目負責人表示,維護成本和低使用率并不能證明其保留是合理的。將是第一個獲得支持的平臺。 Java JDK 11刪除了CORBA,Java EE和JavaFX支持,但添加了十幾個主要新功能。 Java Development Kit(J...
摘要:千呼萬喚,于正式發布版本即,也就是官方推薦可以廣泛使用的版本,其中發布了包括等個新特性,讓我們一睹為快。一新特性一覽二發布計劃日期階段說明對進入階段的變化會應用越來越嚴格的審查。我們需要支持以保持競爭力并與最新標準保持同步。 千呼萬喚,JDK11于2018-09-25正式發布GA版本(GA即General Availability,也就是官方推薦可以廣泛使用的版本),其中發布了包括ZG...
閱讀 4746·2021-10-13 09:39
閱讀 1956·2019-08-29 11:12
閱讀 1150·2019-08-28 18:16
閱讀 1863·2019-08-26 12:16
閱讀 1249·2019-08-26 12:13
閱讀 2996·2019-08-26 10:59
閱讀 2302·2019-08-23 18:27
閱讀 2996·2019-08-23 18:02