浏览Android API来源。 FileDescriptor
的数据成员descriptor
没有访问修饰符:
int descriptor;
然后有一个类FileOutputStream
构造一个新的FileDescriptor并分配给该字段:
fd = new FileDescriptor();
fd.descriptor = fileSystem.open(...);
如何与Java的字段访问控制模型兼容?我认为无法从声明类之外访问包私有字段,并且没有像C ++那样的友情概念。
答案 0 :(得分:25)
基本上,可以在class
和package
级别访问package-private:
来自the source:
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
答案 1 :(得分:1)
没有修饰语的声明,例如
int descriptor;
包是私有的,通常称为DEFAULT是否可以在包中访问,而不是在包外。 同一个包中的任何类都可以访问这些类,但这些类在包外不可见。
有关详细信息,请参阅here
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
答案 2 :(得分:0)
包私有字段(以及其他任何内容)就是:包中的私有字段。这意味着没有其他类可以访问包范围之外的字段(或其他实体)。有关更具体的详细信息,请参阅here。