[英]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
public
比package
更廣泛。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.