这怎么不是Java可见性冲突呢



将一个列表拆分为两个子列表是链表的一个简单实现。为了简化,已放弃其他细节

class SList {
    private head;
    Object item;
    public void split_list(SList list1, SList list2) {
         list1.head = this.head;
         // Some other stuff
    }
}

分配list1.head不是违反了可见性吗?令我惊讶的是,我尝试了一下,结果很好。

private修饰符意味着成员只能由类本身访问,而不限于该类的实例。另请参阅文档

一个类的实例总是可以完全访问同一类的其他实例的所有成员,而不管它们的可见性如何。private表示该的私有,而不是该object

根据JLS 6.6.8:

私有类成员或构造函数只能在包含成员或构造函数声明的顶级类(§7.6)的主体中访问。

这是同一个班。

成员head的修饰符private表示对SList私有,而不是对SList实例私有(在JLS 6.6.8中定义,http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.6.8)。

相关内容

  • 没有找到相关文章

最新更新