Java 中的堆栈,为什么要使用 if?
Stacks in Java, why does it use an if?
下面是 Stack 程序的代码。我的问题具体是关于 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;
}
}
}
有可能为空(=未定义)。
当您告诉它 "Put nothing in there" 时,就会发生这种情况。
该程序无法添加 "nothing" 并引发错误。
所以首先要检查它是否为空
下面是 Stack 程序的代码。我的问题具体是关于 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;
}
}
}
有可能为空(=未定义)。 当您告诉它 "Put nothing in there" 时,就会发生这种情况。 该程序无法添加 "nothing" 并引发错误。
所以首先要检查它是否为空