Стеки в Java, почему он использует if?

Ниже приведен код для программы стека. Мой вопрос конкретно о методе push, где в начале он проверяет, если (pContent!= Null). Почему это так? Я прокомментировал оператор if, и он все еще работал нормально, так в чем причина его использования? Кроме того, в чем разница между pContent и ContentType здесь?

Я пытаюсь понять этот код, который я получил, я очень благодарен за любую помощь.

import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)




public class Stacko<ContentType> extends Actor {

  /* --------- Anfang der privaten inneren Klasse -------------- */

  private class StackNode {

    private ContentType content = null;
    private StackNode nextNode = null;

    public StackNode(ContentType pContent) {
      content = pContent;
      nextNode = null;
    }

    public void setNext(StackNode pNext) {
      nextNode = pNext;
    }

    public StackNode getNext() {
      return nextNode;
    }

    public ContentType getContent() {
      return content;
    }
  }

  /* ----------- Ende der privaten inneren Klasse -------------- */

  private StackNode head;

  public void Stack() {
    head = null;
  }

  public boolean isEmpty() {
    return (head == null);
  }

  public void push(ContentType pContent) {
    if (pContent != null) {
      StackNode node = new StackNode(pContent);
      node.setNext(head);
      head = node;
    }
  }

  public void pop() {
    if (!isEmpty()) {
      head = head.getNext();
    }
  }

  public ContentType top() {
    if (!this.isEmpty()) {
      return head.getContent();
    } else {
      return null;
    }
  }
}

1 ответ

Решение

Существует вероятность того, что он имеет значение null (=undefined). Это происходит, когда вы говорите: "Ничего не кладите туда". Программа не умеет добавлять "ничего" и выдает ошибку.

Поэтому сначала нужно проверить, является ли оно нулевым.

Другие вопросы по тегам