Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何调用存储在包含各种对象的向量中的对象的方法?_Java_Oop_Vector - Fatal编程技术网

Java 如何调用存储在包含各种对象的向量中的对象的方法?

Java 如何调用存储在包含各种对象的向量中的对象的方法?,java,oop,vector,Java,Oop,Vector,我有一个来自不同类的对象的向量列表,其中我需要调用特定于类的方法。这里有一个例子 这里是对象的类 public class VariableElement extends FormulaElement{ private double varValue; public void setVariableValue(double varValue) { this.varValue = varValue; } } 我想在这里调用这个方法,它是FormulaElement类中

我有一个来自不同类的对象的向量列表,其中我需要调用特定于类的方法。这里有一个例子

这里是对象的类

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
     } 
  }    
}

这基本上就是我想要做的,但它会给出一个错误,我如何解决这个问题,有可能吗?提前感谢:)

首先将对象强制转换为可变元素

public void setVariableValue(double value){
  for(Object o:tokenVector){
     if(o instanceof VariableElement){
        VariableElement ve = (VariableElement)o;
        ve.setVariableValue(value);
     } 
  }    
}

您只是忘记了将
o
大小写转换为
variablelement
。只需做以下更改

((VariableElement)o).setVariableValue(value);

如果您有不同的对象,那么您可能应该定义一个
接口
,以指定希望它们调用的方法。如果所有对象的方法都相同,则可以将该对象强制转换为
接口类型
,然后调用该方法

List objects=List.of(新狮子(),新瞪羚());
用于(对象o:对象){
(晚餐时间)喂我;
}
接口支持时间{
公共空间;公共空间;
}
晚餐时间{
公共空间管理{
System.out.println(“我想要一只羚羊”);
}
}
瞪羚类动物在晚餐时间进食{
公共空间管理{
System.out.println(“我想要一些蔬菜”);
}
}

对象上没有
setVariableValue()
方法。您需要强制转换
o
,然后才能对其调用该方法。如果向量中有多个VariableElement对象,会发生什么情况?新值是否会覆盖上一个值?@Laventio_19列表中的所有VariableElement都将其变量值设置为新值。