0

私は SVGPath LinkedList を作成しますが、このリストを反復処理すると、java.lang.NullPointerException. これは、サイズが 9 の単純な LinkedList です。以下のコードを確認できます。

public class RiskControllerClass implements Initializable {

    @FXML
    private SVGPath NA_1; // Alaska

    @FXML
    private SVGPath NA_2; // NorthWest_Ter

    @FXML
    private SVGPath NA_3; // Greenland

    @FXML
    private SVGPath NA_4; // Quebec

    @FXML
    private SVGPath NA_5; // Ontario

    @FXML
    private SVGPath NA_6; // Alberta

    @FXML
    private SVGPath NA_7; // E_America

    @FXML
    private SVGPath NA_8; // W_America

    @FXML
    private SVGPath NA_9; // C_America

    private LinkedList<SVGPath> regions = new LinkedList<>();

    private String nodeID;

    public RiskControllerClass() {

        regions.add(NA_1);
        regions.add(NA_2);
        regions.add(NA_3);
        regions.add(NA_4);
        regions.add(NA_5);
        regions.add(NA_6);
        regions.add(NA_7);
        regions.add(NA_8);
        regions.add(NA_9);

        System.out.println("Length : " + regions.size());

                for (Iterator<SVGPath> iter = regions.iterator(); iter.hasNext();) {
                    SVGPath sVGPath = iter.next();

                    System.out.println(sVGPath.getId());
                }

    }

sVGPath だけを印刷しようとすると、System.out.print(sVGPath)すべての値が印刷されますnull。ただし、リストのサイズを印刷すると、9 ! になります。どうしてですか?とにかく助けてくれてありがとう。

4

1 に答える 1

3

簡単な答え: Aにはエントリjava.util.LinkedListを含めることができます。null

NA_1詳細な回答: あなたのコードはクラスのコンストラクターにあるため、一部のフレームワーク (FXML) が, NA_2, ...,に値を入れることは事実上不可能ですNA_9。したがって、9 つの初期化されていないフィールドを に追加していますLinkedList。Java の初期化されていないフィールドは常にnull. したがって、リストには 9 つの要素が含まれており、そのすべてがnull.

于 2013-03-09T23:39:08.473 に答える