簡體   English   中英

從我的圖書館隱藏課程(aar)

[英]Hide classes from my library (aar)

我試圖創建我的小圖書館。 但我沒有什么問題。 我無法理解如何隱藏一些類/方法以免公開使用。 說我有結構:

-myPackage.com
  -classA  (public class example : public classA {...})
  -classB  (just a class example : class classB {...}

這樣當我將我的aar文件添加到android項目時。 我只能從庫中使用classA。 classB隱藏(對於開發者來說是隱形的)而我無法打電話給他(好吧)。 但是classA可以使用classB中的函數。 因為它在同一個包裝中。 好吧。 那么如何在另一個包中正確創建類?

-myPackage.com
 -myHelpPackage
  -classC (public class example: public class classC {...}
  -classD (just a class example: class classD {...}
 -classA (public class example : public classA {...})
 -classB (just a class example : class classB {...}

通過這種方式,我有兩個開發人員可以調用的公共類

classA
classC

classD僅對classA可見。 所以我不能從classA調用classD(函數)。 主要問題:如何實現它? 我想只有一個classA來打電話。 classC沒問題。 classD和classB應該對開發人員不可見。 但僅適用於classA。 有人可以幫我這個嗎?

如果您未指定任何訪問級別修飾符,例如:

package myPackage.com

class classA {
}

那么這個類默認是package-private 這意味着它只對包內的類可見。 另見甲骨文的文檔在這里

JakobJeremais的評論已經回答了這個問題,但是如果對任何人都不清楚,或者他們跳過它,因為他們只閱讀頂級答案(可以理解)。 如果您的aar中有一個包私有類,它仍然可以公開訪問,所以我建議將該類嵌套在任何調用它,您將是安全的。

例如,我不得不擴展EditText,以便我可以只覆蓋一個方法,而不是其他方法。 然后我不得不從其他一個類引用它,但不希望它從我添加我的庫的任何項目中訪問。 所以我把它嵌套了,現在沒關系。

public class VisibleClass extends View {
    public static HiddenClass extends EditTextCompat { 
        @Override
        public void annoyingFunction() {
            //Disable this function
        }
    }
}

我應該注意到:編譯器不喜歡從布局中訪問它,所以我認為它沒有真正幫助,所以我暫時不推薦它。 如果你有時間修補,請繼續。

暫無
暫無

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

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