0
public void verschuif1(){
    for(Object x : puntenLijst){
        x.verschuif2(3, 3);
    }
}

puntenLijst は、別のクラスのオブジェクト インスタンスの ArrayList です。ここで、ArrayList 内のすべてのオブジェクトをループし、メソッド verschuif2() (他のクラスから) を使用する foreach ループで何かをしようとしました。

しかし、それは機能していないようです。

誰でも私を助けることができますか?

どうもありがとう!

4

3 に答える 3

6

最初にオブジェクトをキャストする必要があります。

for (Object x : puntenLijst){
    ((MyObject)x).verschuif2(3, 3);
}

または、 でジェネリックを使用することもできますArrayList。したがって、次のArrayListような場合:

ArrayList<MyObject> puntenLijst

キャストを完全に避けることができます:

for (MyObject x : puntenLijst){
   x.verschuif2(3, 3);
}

関連:ジェネリックを使用する理由

于 2012-10-16T22:26:13.513 に答える
0

問題は、ループがオブジェクト参照で動作することです。メソッドが Object で宣言されていない場合、コードはメソッド呼び出しが有効であることを知る方法がありません。

必要なのは、puntjenblist を次のように宣言することです。

{type} が versschuif2 メソッドを宣言するクラスであるコレクション。

次に、 for ループで {type} を介してオブジェクトを参照し、そのメソッドを呼び出すことができます。

そうすれば、 for ループは、コレクション内のすべてのオブジェクトに呼び出し可能なメソッドがあることを認識します。

于 2012-10-16T22:29:56.120 に答える