这怎么不是Java可见性违规

问题描述 投票:0回答:4

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

class SList {
    private head;
    Object item;

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

}

分配list1.head是不是可见性违规?令我惊讶的是,我尝试过并且工作正常

java debugging linked-list visibility
4个回答
0
投票

根据JLS 6.6.8

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

这是同一个班级。


4
投票

private修饰符表示成员只能由类本身访问,它不限于该类的实例。另见the documentation


1
投票

类的实例始终可以完全访问同一类的其他实例的所有成员,无论其可见性如何。 private对这个类来说是私有的,而不是对这个对象。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.