Java 通用对象空指针检查抛出空指针异常

Java Generic Object Null Pointer Check Throwing Null Pointer Exception

我尝试搜索类似的问题,但无济于事。如果我将运算符从“!=”更改为“==”,它会打印“{}”。此外,如果我只是打印出我正在测试的变量 (current.myData),它引用的 Integer 将按预期打印出来。但是,每次我测试 "current.myData != null" 它都会抛出空指针异常并退出。非常感谢任何帮助!

public class LinkedQueue<E> implements QueueADT<E> {

@Override
public String toString() {
...
    String exitVal = null;
    final StringBuffer sb = new StringBuffer();
    if (myFront.myData == null) {
        exitVal = "{ }";
    } else {
        Node<E> current = myFront.myNext;
        sb.append('{');
        sb.append(myFront.myData);
        while (current.myData != null) {
            sb.append(", ");
            sb.append(String.valueOf(current.myData));
            current = current.myNext;
        }
        sb.append('}');
        exitVal = sb.toString();
    }
    return exitVal;
}

在循环体中,current = current.myNext; 没有测试 myNext 是否为 null,因此在第一个(或后续)循环迭代中 current 必须是 null。你可以改变

while (current.myData != null) {

类似于

while (current != null && current.myData != null) {