Я пытаюсь создать некоторые классы, которые реализуют определенный интерфейс (в данном случае 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>
Я надеюсь, что у меня просто есть момент и я упускаю что-то действительно очевидное, но, возможно, у меня неправильное понимание того, как я должен использовать интерфейсы.