Изменение метода (Bar, Bar) не определено для типа ArrayList

#java #arraylist

#java #arraylist

Вопрос:

Я пытаюсь изменить значение объекта ‘Bar’, я создал метод изменения, который принимает 2 переменные bar, однако, когда я пытаюсь использовать его в ‘list.get (i)’ в методе compareBar, я получаю сообщение об ошибке, в котором говорится, что этот метод не определен для типа ArrayList, это не объект Bar и как мне изменить его, чтобы это было так?

  public class Envelope {
    ArrayList<Bar> list = new ArrayList<Bar>();


    //Compares and adjusts range of bars accordingly    
    public void compareBars() {
        for(int i = 0; i < list.size(); i  ) {
            if(list.get(i 1).left <= list.get(i).right) {
                if(list.get(i).height >= list.get(i 1).height) {
                    list.change(list.get(i 1),list.get(i));
                }else if(list.get(i 1).height >= list.get(i).height) {
                    list.change(list.get(i),list.get(i 1));
                }
            }
        }
    }
    // Modifies ranges of bar values
    public void change(Bar target, Bar replacement) {
        if(target.left < replacement.left) {
            target.right = replacement.left;            
        }
        if (target.left > replacement.left) {
            target.left = replacement.right;
        }
    }

}
  

Комментарии:

1. change определяется для вашего Envelope типа, а не ArrayList<Bar> . Поэтому list.change не будет работать. Вам понадобится this.change . Голосование за закрытие как опечатку / невоспроизводимость / бесполезность для других в будущем.

2. change(Bar target, Bar replacement) предназначено для класса Envelope , а не для метода класса ArrayList

3. Попробуйте использовать this.change вместо list.change