Как мне вызвать метод объекта, хранящегося в векторе, содержащем различные объекты? - PullRequest
1 голос
/ 08 июля 2019

У меня есть векторный список объектов из разных классов, в котором мне нужно вызвать метод, специфичный для класса.Вот пример

здесь класс объекта,

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

это в основном то, что я хочу сделать, но выдает ошибку, как я могу исправить эту проблему, возможно ли это вообще?заранее спасибо :) 1009 *

Ответы [ 3 ]

1 голос
/ 08 июля 2019

Сначала приведите ваш объект к VariableElement.

public void setVariableValue(double value){
  for(Object o:tokenVector){
     if(o instanceof VariableElement){
        VariableElement ve = (VariableElement)o;
        ve.setVariableValue(value);
     } 
  }    
}
0 голосов
/ 08 июля 2019

Если у вас разные объекты, вам, вероятно, следует определить 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");
       }
    }
0 голосов
/ 08 июля 2019

Вы просто забыли занести o в VariableElement.Просто внесите следующие изменения

((VariableElement)o).setVariableValue(value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...