-2
class blabla extends JPanel
{
    public blabla()
    {
    //code
    }
}

class Main
{
    public static void main(String[] args)
    {
        JPanel b;
        ArrayList<blabla> c;

        blabla a = new blabla();

        b = new JPanel();
        c = new ArrayList<blabla>();

        b.add(a);
        c.add(a);

        blabla d = (blabla) b.getComponent(0);
        System.out.println(c.indexOf(d));
     }
}

同じオブジェクトですかArrayList aJPanel a出力されるコードは何ですか?

4

2 に答える 2

3

この回答は、コードスニペットが提供されておらず、質問があったときに質問で述べたことに基づいています...

コンポーネントインスタンスを作成し、それを画面に描画して、ArrayListに追加しました。子を使用して描画されたものを参照することでアクセスしています(getParent()メソッド)。ただし、この参照をArrayLists indexOf();に渡すと、メソッドの場合、-1を返します。これは、コンポーネントがArrayListに存在しないことを意味していると思います。これは何が起こるべきか、それとも私はおそらく私のプログラムで何かを台無しにしたのでしょうか?私はあなたにSSCCEを提供していません、私はあなたにコーディングをするように頼んでいません、これが通常のJavaの振る舞いであるかどうかを教えてください...

これが私の応答です

のjavadocindexOf()は...

このリストで指定された要素が最初に出現するインデックスを返します。このリストに要素が含まれていない場合は-1を返します。より正式には、(o == null?get(i)== null:o.equals(get(i)))のような最小のインデックスiを返します。そのようなインデックスがない場合は、-1を返します。

ご覧のとおり、これはequals()コンポーネントの実装によって異なります。リストから値を取得するための鍵を保持している実装を確認してください。

于 2012-09-01T15:59:26.467 に答える
0

さて、ここにあなたの修正された質問に対する答えがあります...

ArrayList aとJPanelは同じオブジェクトですか?

いいえ。ただし、クラスの同じオブジェクトが含まれていますblabla

出力されるコードは何ですか?

出力は

0

JPanelこれは、とに同じコンポーネントを配置したのと同じで、ArrayList要素0のインデックスです。

于 2012-09-01T16:18:53.470 に答える