Java – 类方法可以看到同类参数的私有字段

我遇到了一个相当奇怪的行为,并且不确定这是一个Java问题还是只是Eclipse的问题。

请使用以下代码:

class Foo { private String text; public void doStuff(Foo f) { System.out.println(f.text); } } 

这里的问题是,为什么f.text可以访问? 这是一个私有领域,所以根据我的逻辑,它不应该,但IDE似乎认为它是。

这是设计的。 私有字段可以在同一个类中访问, 即使是不同的实例也是如此 。 有关详细信息,请参阅此处以及Oracle对此的官方声明。 由于doStuffFoo的成员,因此可以访问Foo任何私有字段。

private修饰符指定只能在自己的类中访问该成员[ 甚至来自不同的实例 ]。 [强调我的]

现在,由于text的可见性修饰符,以下代码示例不起作用:

 class Bar{ public int baz; public void doMoreStuff(Foo f){ System.out.println(f.text); } } 

因为doMoreStuff是在Bar定义的,而不是Foo