2015-06-19 48 views
1

即使這是我不經常發現,有什麼意見的原因/ * *封裝/前成員?Java包,私有可見成員/ * *封裝/後綴

/* package */ final void attach(Context context) { 
    attachBaseContext(context); 
    mLoadedApk = ContextImpl.getImpl(context).mPackageInfo; 
} 

下面是從AOSP線180的示例: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/app/Application.java

+0

基本上,如果您知道該語言,那麼這毫無意義... – Submersed

回答

2

默認情況下,在Java成員使用包級別的訪問權限 - 他們可以通過其他類在同一個包在其他包訪問,而不是由類。

實際使用這個功能是相當罕見的,因爲你通常希望所有的變量是私有的(或保護),和你的方法要麼是私有的(自用),受保護的,或公開。

沒有明確的「包裝」修飾符,因此沒有簡單的方法可以一目瞭然地知道修飾符是否丟失,因爲作者忘記了包含正確的修飾符,或者因爲他們故意要成員具有包級別訪問。

這就是爲什麼在極少數情況下當您想要使用包時,最好在方法聲明前放一個/ *包* /註釋,以明確說明您有意使用此訪問級別,而不是意外忘記指定一個。

註釋本身實際上並沒有做任何事情,只要編譯器而言 - 它只是使代碼更容易理解。

3

作爲評論,它有編譯器絕對沒有影響。然而,它可以被人類用來清楚地說明一個成員(方法或者領域)或者類是包私有的。