我有一个来自不同类的对象的Vector列表,在其中我需要调用特定于类的方法。这是一个例子
这里是对象的类,
public class VariableElement extends FormulaElement{
private double varValue;
public void setVariableValue(double varValue) {
this.varValue = varValue;
}
}
在这里我要调用方法,这是FormulaElement类内的另一个方法
public void setVariableValue(double value){
for(Object o:tokenVector){
if(o instanceof VariableElement){
o.setVariableValue(value);//throws error symbol not found
}
}
}
这基本上是我想要做的,但它给出了一个错误,我该如何解决此问题,有可能吗?在此先感谢:)
答案 0 :(得分:1)
首先将对象投射到VariableElement。
public void setVariableValue(double value){
for(Object o:tokenVector){
if(o instanceof VariableElement){
VariableElement ve = (VariableElement)o;
ve.setVariableValue(value);
}
}
}
答案 1 :(得分:0)
您只是忘记将o
的大小写为VariableElement
。只需进行以下更改
((VariableElement)o).setVariableValue(value);
答案 2 :(得分:0)
如果您有不同的对象,则可能应该定义一个interface
来指定您希望它们调用的方法。如果所有对象的方法都相同,则可以将该对象强制转换为interface type
并调用该方法。
List<Object> objects = List.of(new Lion(), new Gazelle());
for (Object o : objects) {
((SupperTime) o).feedMe();
}
interface SupperTime {
public void feedMe();
}
class Lion implements SupperTime {
public void feedMe() {
System.out.println("I want a gazelle");
}
}
class Gazelle implements SupperTime {
public void feedMe() {
System.out.println("I want some veggies");
}
}