2017-03-04 4 views
3

複数のArrayList要素にアクセスできません。コードは以下に示されており、値5または6にアクセスできません。私のIDEはコードSystem.out.println(specification.get(0).get(0).value);の最後のステートメントを受け入れていませんArrayListのオブジェクトの要素を配列リスト内に取得する方法を教えてください。JavaのMultiple ArrayListのオブジェクトの要素へのアクセス

class Node { 

    int value; 
    boolean explored; 

    Node(int v) { 
     value = v; 
     explored = false; 
    } 

    int getValue() { 
     return value; 
    } 
} 

class Board { 

    ArrayList<ArrayList> specification; 
    ArrayList<Node> speci_node; 

    Board() { 
     speci_node = new ArrayList<Node>(1); 
     speci_node.add(new Node(5)); 
     speci_node.add(new Node(6)); 

     specification = new ArrayList<ArrayList>(1); 
     specification.add(speci_node); 
     System.out.print(specification.get(0).get(0).value); // variable 'value' is not found error.... 
    } 
} 
+1

あなたは何を得ていますか? –

+0

IDEは最後のステートメントを受け入れていません。変数 'value'が見つかりません。 –

+0

両方のクラスが同じファイルにありますか?それとも、ファイルが違っていて、パッケージが違うのでしょうか? – dpr

答えて

1

あなたはこのようなあなたの要素をキャストする必要があります:@ YCF_Lの答えが正しいですが

System.out.print(((Node) specification.get(0).get(0)).value); 
//-----------------|-^^^-|----------------------------------- 

この5

+0

それらをマージしているそれはあなたがまだそれ私の答えは、なぜこのOPを助ける@FedericoPeraltaSchaffnerソリューション正しく –

+0

:)感謝を働きましたダウン投票? –

+0

ある –

3

を返します、あなたにも、内側ArrayListのジェネリック型を指定することができますキャストを避けるために:

specification = new ArrayList<ArrayList<Node>>(1); 

フルトvalueのメンバーはパッケージプライベートなので、Nodeクラスのパッケージ外ではアクセスできないため、NodeBoardのクラスは同じパッケージ内にある必要があります。しかし、これは既にここにあるようです...

関連する問題