2016-02-21 2 views
-2
public class DLLNode{ 
    private int data; 
    private DLLNode prev; 
    private DLLNode next; 
} 

Что это такое private DLLNode prev?Внутренний класс в java в двунаправленном списке

Как класс может быть определен внутри класса?

+4

Это уже второй раз, когда вы задаете вопрос с тем же фрагментом кода. Вы, очевидно, очень плохо знакомы с основами Java. Пожалуйста, сначала прочитайте некоторые [учебники] (https://docs.oracle.com/javase/tutorial/). – Seelenvirtuose

+0

Дубликат: http://stackoverflow.com/questions/35533868/cant-understand-java-doubly-linked-list. –

+0

@Seelenvirtuose да, я только что начал :) –

ответ

0

Это не определение класса, он определяет поле в классе типа DLLNode.

Код, который поставляется в основном определяет класс типа DLLNode с 3 частных полей:

  • Поле типа integer, именуемых data.
  • Поле типа DLLNode, именуемое как prev.
  • Поле типа DLLNode, именуемое как next.

Все это означает, что как только DLLNode объект будет создан, он будет содержать значения 3 - 1 целое число и 2 значения адресов, где DLLNode поля хранятся.

Это позволяет вам ссылаться на объект, даже если он находится внутри одного и того же «определения». то есть следующий код является законным:

public class DLLNode{ 

    private int data; 
    private DLLNode prev; 
    private DLLNode next; 

    public int whatsNext() { 
     return next.data; // btw, a null check if always encouraged :) 
    } 
} 

Все, что я сделал здесь, в whatsNext методы был заданием с next полем и получить доступ к его data поля. В основном, я просто спросил Java для адреса, где хранится объект типа DLLNode (next), а затем обратился к одному из своих полей, как если бы это были любые другие объекты.

Опять же, основная идея здесь заключается в том, что это определение простого поля как любого другого, не переопределяя сам класс.

+0

Хорошо объяснил .thanks :) –

+0

Счастлив помочь. Могли бы вы попросить вас вернуть благосклонность и принять мой ответ? Благодарю. –

Смежные вопросы