关于java:为什么私人会员可以返回?

Why can a private member be return?

本问题已经有最佳答案,请猛点这里访问。

以下示例代码来自网站。

sInstance是一个私有成员,这意味着它只能在LittleMonkProviderHolder类中访问。

为什么函数getInstance()可以返回LittleMonkProviderHolder.sInstance?谢谢!

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class FloatActionController {

    private FloatActionController() {
    }

    public static FloatActionController getInstance() {
        return LittleMonkProviderHolder.sInstance;  //Return a private member!!!
    }


    private static class LittleMonkProviderHolder {
        private static final FloatActionController sInstance = new FloatActionController();
    }

}


我觉得这像比尔·帕格的单打。从FloatActionController类的私有内部类返回私有成员没有任何错误。private说明符仅表示试图通过以下方式直接访问字段:

1
FloatActionController.LittleMonkProviderHolder.sInstance

会失败,因为内部类及其成员都是私有的。