0

我在名为“结构”的类中定义了一个嵌套节点类,并且

class HNode<T extends ArrayList> {
private T _datum;
private HNode<T> _prev;
private HNode<T> _next;

public HNode(T datum, HNode<T> prev, HNode<T> next) {
    _datum = datum;
    _prev = prev;
    _next = next;
}

public HNode<T> getNext() {
    return _next;
}

当我创建这个 Node 类时,我手动指定了 _datum、_prev 和 _next 字段。

_r0 = new HNode<ArrayList<String>>(_al.get(3), _r0, _r1);
_r1 = new HNode<ArrayList<String>>(_al.get(4), _r0, _r2);
_r2 = new HNode<ArrayList<String>>(_al.get(5), _r1, _pos3);
_pos3 = new HNode<ArrayList<String>>(_al.get(6), _r2, _pos4);
_pos4 = new HNode<ArrayList<String>>(_al.get(7), _pos3, _pos5);

(这是初始化的一部分。_al 是 ArrayList 的一个 ArrayList,我曾经为此调用 Collections.shuffle(_al) 方法。)

当我用 JUnit Test(@Test) 测试 getNext() 方法时

public void getNextTest() {
    Structure st = new Structure();
    HNode<ArrayList<String>> six = st.getSix(); 
    six.getNext().add("KKK");
    String actual = st.getSeven().getDatum().get(0); 
    String expected = "KKK";
    assertTrue(" ", actual == expected);
}

getSix() 返回 _pos3,getSeven() 返回 _pos4(在 _pos3 旁边)(临时方法)。任何人都可以看到问题吗?

4

1 回答 1

1

我认为这里出了问题:

_pos4 = new HNode<ArrayList<String>>(_al.get(7), _pos3, _pos5);

您已将_pos5指定为下一个元素,但我认为您从未初始化它。所以这个值默认为空。现在,如果您尝试访问空引用上的任何方法,您将获得 NullPointerException。

于 2013-04-03T03:37:19.023 回答