2011-08-01 7 views
0

私はすでにこの質問をしています。私は自分で作った クラスを使用することについてのさらなる質問があります。 下記のコードを参照してください。javaペアとArrayListの質問

import java.util.*; 

    class Pair{ 
     int toWhere; 
     int weight; 
    } 

    public class Test{ 
     public static void main(String[] args){ 
     ArrayList[] arr = new ArrayList[2]; 
     Pair p = new Pair(); 

     for(int i=0; i<arr.length; i++) 
      arr[i] = new ArrayList<Pair>(); 

     p.toWhere = 1; 
     p.weight = 2; 
     arr[0].add(p); 
     System.out.println(p); // gives me [email protected] 
     System.out.println(arr[0].get(0)); // gives me exactly the same, [email protected] 
     System.out.println(p.toWhere); // gives me no error, and is 1 
     System.out.println(arr[0].get(0).toWhere); // gives me an error 
     } 
    } 

私の質問はこれです。 pの値とarr[0].get(0)(これはアドレスですか?推測されます)は同じです。 しかし、なぜp.toWhereが私に正確な値を与え、 arr[0].get(0).toWhereはありませんか?

+0

はあなたが使用する必要がありますがある可能性があります代わりに 'ArrayListの []' – Nishant

答えて

2

これは、arrArrayListの配列であり、Pairの配列であることをコンパイラが知らないためです。あなたは、ARRを入力する必要があります。

List<Pair>[] arr = new ArrayList[2]; 

あなたがarr[0].get(0)を使用する場合さて、コンパイラはgetがそうPair年代の方法があり、(あなたのコードではないようObjectPairを返すことを知っています。

+0

はどうもありがとうございました:) – hongtaesuk

+3

@hongtaesukを今あなたは –

+0

ああそれは私がやるべきものだ、チェックマークをクリックして答えを受け入れる必要があります! – hongtaesuk