По сути, вы обращаетесь к видимому свойству определенного типа.См. Этот код для примера:
Node current = null ; // defined to working node, null on new list
Node head = null ; // defined during list creation
Node tail = null ; // defined during list extension
Node newLink = new Node () ; // for example -- in practice this would
// be created on insert
public Node {
Node next = null ;
Node previous = null ;
Object data = null ;
}
// some ops here to traverse, insert, replace (and always null or end check)
Вы не используете геттеры и сеттеры.«Оператор двух точек» просто обращается к определенным свойствам каждого узла.Поэтому, когда вы говорите, current.next.previous, вы получаете свойства непосредственно из этих конкретных узлов.
Более подробно: Из текущего следующего (Узел с именем «следующий» в Узле с именем current) вы затем получаете предыдущий (Узел с именем «предыдущий» от Узла с именем «Следующий»).в узле с именем «текущий»).