簡體   English   中英

訪問Java中的程序包專用字段

[英]Accessing package-private fields in Java

隨便看看Android API來源。 有一個FileDescriptor帶有一個沒有訪問修飾符的數據成員descriptor

int descriptor;

然后是FileOutputStream類,該類構造一個新的FileDescriptor並將其分配給該字段:

fd = new FileDescriptor();
fd.descriptor = fileSystem.open(...);

它與Java的現場訪問控制模型如何兼容? 我認為無法從聲明類的外部訪問包私有字段,並且沒有像C ++這樣的友好概念。

基本上,可以在classpackage級別訪問package-private:

來源

Access Levels
Modifier    Class   Package  Subclass World
public         Y        Y       Y       Y
protected      Y        Y       Y       N
no modifier    Y        Y       N       N
private        Y        N       N       N

沒有修飾符的聲明,例如

int描述符;

是包私有的,在包內而不是包外均可訪問DEFAULT。 同一包內的任何類都可以訪問它們,但在包外不可見。

有關更多詳細信息,請參閱此處

Access Levels
Modifier        Class   Package     Subclass    World
public            Y         Y        Y            Y
protected         Y         Y          Y          N
no modifier       Y         Y          N          N
private           Y         N          N          N

包私有字段(以及其他任何內容)就是:包中的私有字段。 這意味着沒有其他類可以訪問包范圍之外的字段(或其他實體)。 有關更多詳細信息,請參見此處

暫無
暫無

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

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