public void verschuif1(){
for(Object x : puntenLijst){
x.verschuif2(3, 3);
}
}
puntenLijst 是另一个类的对象实例的 ArrayList。现在我尝试用一个 foreach 循环来做一些事情,该循环遍历 ArrayList 中的所有对象并在其上使用 verschuif2() 方法(来自其他类)。
但这似乎不起作用。
有人可以帮帮我吗?
非常感谢!
public void verschuif1(){
for(Object x : puntenLijst){
x.verschuif2(3, 3);
}
}
puntenLijst 是另一个类的对象实例的 ArrayList。现在我尝试用一个 foreach 循环来做一些事情,该循环遍历 ArrayList 中的所有对象并在其上使用 verschuif2() 方法(来自其他类)。
但这似乎不起作用。
有人可以帮帮我吗?
非常感谢!
您必须先投射您的对象:
for (Object x : puntenLijst){
((MyObject)x).verschuif2(3, 3);
}
或者,您可以在ArrayList
. 所以对于ArrayList
这样的:
ArrayList<MyObject> puntenLijst
您可以完全避免投射:
for (MyObject x : puntenLijst){
x.verschuif2(3, 3);
}
相关:为什么使用泛型
您需要在调用该方法之前进行强制转换
((ClassName) x).verschuif2(3, 3);
使其编译。
比这更好的是使您的列表通用
List<ClassName> puntenLijst = new ArrayList<ClassName>();
那么你就不需要强制转换(这被认为是不安全的类型)。然后你会循环如下
for (ClassName x : puntenLijst){
x.verschuif2(3, 3); // no casting required
}
问题是您的循环对对象引用进行操作。如果您的方法未在 Object 中声明,则您的代码无法知道该方法调用是否有效。
您需要的是将 puntjenblist 声明为与此类似:
集合,其中 {type} 是一些声明 versschuif2 方法的类。
然后在您的 for 循环中,您可以通过 {type} 引用对象以调用该方法。
这样,for 循环就知道集合中的每个对象都有可以调用的方法。