Пишу метод, принимающий тип интерфейса вместо типа класса

Я пытаюсь создать несколько классов, реализующих конкретный интерфейс (в данном случае XYPlottable ) и метод, который может обрабатывать любой класс, реализующий этот интерфейс.

На данный момент у меня есть следующее (которое работает):

public interface XYPlottable {
    public Number getXCoordinate();
    public Number getYCoordinate();
    public Number getCoordinate(String fieldName);
}

public class A implements XYPlottable {
//Implements the above interface properly
...
}

public class B implements XYPlottable {
//Implements the above interface properly
...
}

Это отлично работает. У меня также есть метод, чтобы попытаться построить что-нибудь, что является XYPlottable:

public static Frame createPlot(String title, String xAxisLabel, String yAxisLabel,
                               List<XYPlottable> points, boolean fitLine) {

Поэтому я пытаюсь использовать его с одним из указанных выше конкретных классов и жалуется на несовместимые типы:

List<A> values = _controller.getValues(tripName);
XYPlotter.createPlot("Plot A", "B", "C", values, false);

Вот точная ошибка:

incompatible types
  required: java.util.List<XYPlottable>
  found:    java.util.List<A>

Надеюсь, я ' m просто на мгновение упускаю что-то действительно очевидное, но, возможно, я неправильно понимаю, как мне следует использовать интерфейсы.

11
задан Premraj 24 April 2011 в 15:42
поделиться