簡體   English   中英

java 9模塊中沒有訪問說明符和public之間有什么區別?

[英]What is the difference between no access specifier and public in java 9 module?

從java 9開始,公共訪問僅限於它自己的模塊。 這是否意味着public行為像package protected (沒有訪問說明符)? 有人可以澄清一下嗎?

Module系統的主要目標之一是提供:

強大的封裝 ,允許組件聲明其中哪些公共類型可供其他組件訪問,哪些不可訪問。

要添加到#accessibility方面 -

Java編譯器和虛擬機認為一個模塊中的包中的公共類型只有在第一個模塊可被第二個模塊讀取時才能被其他模塊中的代碼訪問 ,在上面定義的意義上,第一個模塊導出該包

因此,為了從另一個模塊訪問包的公共類型,被訪問的模塊需要export該包以使其可讀。

但是,對於模塊系統中的所有類型的模塊(例如自動模塊),這不一定適用。

這是否意味着公共行為像包受保護(沒有訪問說明符)?

不可以 ,公共類型應該可以訪問相同模塊中的不同包以及何時(如果)導出,該包還公開了其他模塊的其他包對公共類型的訪問。

package元素只能在包中訪問。 模塊中的其他包無法訪問這些元素。

沒有exports public可以訪問模塊中的任何其他包。

換一種說法:

  • package元素是包本地的
  • 沒有exports public模塊本地的

因此,沒有exports publicpackage更廣泛。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM