這可能是一個愚蠢的問題,因爲我是android編程的新手。我已經在我的Android項目中導入了一個.aar庫,我試圖在該庫中存在的一個類中訪問受保護的最終同步方法。但是,我可以參考班級中其他未同步/最終的方法。當我打開創建.aar文件的庫的源代碼時,我能夠看到該方法,但在導入之後無法使用它。 請問這裏有什麼問題嗎?無法訪問類中受保護的最終同步方法
回答
導入無關與字段和進口類的方法的可訪問性和可見性,只是每次使用課程時不輸入完整課程名稱的快捷方式。
要訪問一個導入方法或字段某一類,它們之前改性劑應該被標記爲公共。
既然你試圖訪問該方法被標記爲保護,該方法只能如果您正在嘗試到擴展分類BaseActivity子類中訪問,訪問,或者如果你是從相同包的類中訪問它。
解決的辦法是延長BaseActivity,要麼使用您的自定義方法中的方法是這樣的:
public class SomeOtherActivity extends BaseActivity{
public void someOtherMethod(Runnable task, long delayMillis){
super.queueEvent(task,delayMills);
}
}
這樣,你聲明的方法提供了一個公共接口給其他開發者想要使用排隊事件的方法的特定版本。
然而,這不是通過多態性也不與組成完成的,所以你可能需要確保你真正需要此方法,或者是否有其他現有的解決方案,因爲是有原因的,原來的方法被標記爲最終和保護這可能會導致其他問題,如果不處理照顧。
介紹訪問修飾符可以在這裏找到:
The Java tutorials - Controlling Access to Members of a Class 在另一方面,這個問題已經沒有任何關係「同步」和「最終」
介紹的關鍵字同步可以在這裏找到:
The Java tutorials - Synchronized Methods
引言關鍵字最後可以在這裏找到:
The Java tutorials - Final Classes and Methods
當你說「使用」你是指呼叫/調用或重寫?
A.保護的方法是隻對包可見和亞類
B. final方法不能被重寫
A和B可以用這個方法做的唯一的事情是把它在你的子類。
是的,我無法稱呼它。 –
受保護的方法只能由擴展主類的類調用。
要繞過這個錯誤,您可以創建一個類來擴展您的BaseActivity
類,然後調用一個公用方法來調用私有方法。
事情是這樣的:
class MyBaseActivity extends BaseActivity {
public final synchronized void myQueueEvent(Runnable task, long delayMillis) {
super.queueEvent(task, delayMillis);
}
}
現在,您可以通過調用使用它:MyBaseActivity.myQueueEvent(...);
也可以通過相同包中的類來訪問它 –
- 1. 無法訪問實例化類的受保護方法
- 2. 無法從子類ArrayBuffer訪問ResizableArray的受保護方法swap?
- 3. 如何在無關的類中訪問受保護的方法?
- 4. 無法訪問受保護的成員
- 5. 無法訪問受保護的成員?
- 6. 關於訪問受保護的方法
- 7. 無法訪問受保護的類成員在派生類中
- 8. 無法訪問C#中派生類中的受保護函數?
- 9. 無法訪問在'A'類中聲明的受保護成員
- 10. 無法訪問抽象類中受保護的構造函數
- 11. 派生類不能訪問基類的受保護方法
- 12. 來自不同實例的Java受保護的方法訪問
- 13. 無法訪問指針的受保護的int變量父類
- 14. 抽象類中的受保護方法
- 15. Java - 受保護的方法不能從子類訪問
- 16. 爲什麼受保護的方法不能從子類訪問?
- 17. 從父類訪問受保護的方法
- 18. 無法在StAXOMBuilder()類中調用受保護的方法
- 19. 如何訪問第三方庫中受保護的Java方法?
- 20. 無法訪問也是子類的子類中的受保護成員
- 21. C#:基類中的受保護方法;無法使用另一個類的派生類對象進行訪問
- 22. 用受保護的方法裝飾類
- 23. 受保護類的Javadoc方法
- 24. 對象類的受保護方法MemberWiseClone()
- 25. Ruby受保護的方法問題
- 26. Junit受保護的方法
- 27. 受保護的方法
- 28. 訪問受保護方法中的公共變量
- 29. 如何在C中訪問受保護的方法#
- 30. 在其他包中訪問受保護的方法?
https://stackoverflow.com/questions/215497/in-java-difference-between-default-public-protected-and-private – shmosel