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

puntenLijst 是另一个类的对象实例的 ArrayList。现在我尝试用一​​个 foreach 循环来做一些事情,该循环遍历 ArrayList 中的所有对象并在其上使用 verschuif2() 方法(来自其他类)。

但这似乎不起作用。

有人可以帮帮我吗?

非常感谢!

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

您需要在调用该方法之前进行强制转换

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

使其编译。

比这更好的是使您的列表通用

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

那么你就不需要强制转换(这被认为是不安全的类型)。然后你会循环如下

for (ClassName x : puntenLijst){ 
    x.verschuif2(3, 3); // no casting required
} 
于 2012-10-16T22:27:23.887 回答
0

问题是您的循环对对象引用进行操作。如果您的方法未在 Object 中声明,则您的代码无法知道该方法调用是否有效。

您需要的是将 puntjenblist 声明为与此类似:

集合,其中 {type} 是一些声明 versschuif2 方法的类。

然后在您的 for 循环中,您可以通过 {type} 引用对象以调用该方法。

这样,for 循环就知道集合中的每个对象都有可以调用的方法。

于 2012-10-16T22:29:56.120 回答