2012-10-16 38 views
0
public void verschuif1(){ 
    for(Object x : puntenLijst){ 
     x.verschuif2(3, 3); 
    } 
} 

puntenLijst是來自另一個類的對象實例的ArrayList。 現在我試着用foreach循環做一些事情,循環遍歷ArrayList中的所有對象,並使用其上的方法verschuif2()(來自其他類)。使用方法從ArrayList的另一個類與foreach循環?

但它似乎並沒有工作。

有人可以幫我嗎?

非常感謝!

+0

也許編譯器不明白荷蘭語? – irreputable

回答

6

你將不得不首先投你的對象:

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

或者,你可以在你的ArrayList使用泛型。因此,對於一個ArrayList這樣的:

ArrayList<MyObject> puntenLijst 

你可以完全避免鑄造:

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

相關:Why use Generics

0

您需要調用方法

((ClassName) x).verschuif2(3, 3); 

之前投讓它編譯。

比那還好

是讓你列表通用

List<ClassName> puntenLijst = new ArrayList<ClassName>(); 

,那麼你就不需要投(這被認爲是不安全的類型)。然後你會循環如下

for (ClassName x : puntenLijst){ 
    x.verschuif2(3, 3); // no casting required 
} 
0

問題是,你的循環操作對象引用。如果您的方法未在Object中聲明,則您的代碼無法知道該方法調用是否有效。

你需要西隧是進行類似聲明此puntjenblist:

收集其中{}類型是一些類聲明versschuif2方法。

然後在您的for循環中,您可以通過{type}引用對象以調用該方法。

這樣,for循環就知道集合中的每個對象都有可以調用的方法。

相關問題