0

「Structure」という名前のクラス内にネストされた Node クラスを定義し、

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を割り当てましたが、初期化したことがないと思います。したがって、この値はデフォルトで null です。null 参照で任意のメソッドにアクセスしようとすると、NullPointerException が発生します。

于 2013-04-03T03:37:19.023 に答える