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

时间:2019-07-08 17:39:24

标签: java oop vector

我有一个来自不同类的对象的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
     } 
  }    
}

这基本上是我想要做的,但它给出了一个错误,我该如何解决此问题,有可能吗?在此先感谢:)

3 个答案:

答案 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");
       }
    }