Стеки в 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). Это происходит, когда вы говорите: "Ничего не кладите туда". Программа не умеет добавлять "ничего" и выдает ошибку.
Поэтому сначала нужно проверить, является ли оно нулевым.