Java создает массив классов и вызывает метод этого класса - PullRequest
0 голосов
/ 16 октября 2018

Пока что я пытаюсь создать ArrayList объектов, которые используют один и тот же метод, который я хочу вызвать в порядке ArrayList.

Пока код выглядит так

public class Shape extends Application {
   public void do(GraphicsContext canvas, int size, Color color){
     ;
   } 
}


public class Triangle extends Shape {
   @Override
   public void do(GraphicsContext canvas, int size, Color color){
      canvas.setFill(Color.WHITE);
      double[] xs = {60,80.0,50.0};
      double[] ys = {60,120.0,50.0};
      canvas.fillPolygon(xs,ys,3);
   }
}

И основной класс, который запускается автоматически, выглядит следующим образом

public class Main {
    public void drawForegroundContent(GraphicContext canvas){
       ArrayList<Shape> shpes = new ArrayList<Shape>();
       Triangle t = new Triangle();
       shapes.add(t);
       shapes.add(t);

       for (Shape k : shapes){
          k.do(canvas,CoreColor.BLACK, 80);
       }
    }
}

Однако ошибка <identifier> expected k.do(canvas, CoreColor.BLACK, 80)

Кроме того, он аналогично жалуется на идентификатор наvoid do Шейп-класса.Что именно не так в этом коде?

1 Ответ

0 голосов
/ 16 октября 2018

Согласно документам , do является ключевым словом (как в контексте цикла do-while).Вы должны назвать свой метод как-нибудь еще.Как говорят JLS в отношении ключевых слов:

50 символьных последовательностей, образованных из букв ASCII, зарезервированы для использования в качестве ключевых слов и не могут использоваться в качестве идентификаторов


Также отметим, что аргументы не в порядке при вызове метода.Вы передаете GraphicContext, Color, int, когда метод принимает GraphicContext, int, Color.

...