Функция с интерфейсом в качестве аргумента

У меня есть интерфейс под названием Layer:

public interface Layer {}

и класс, который реализует этот интерфейс под названием VectorLayer:

public class VectorLayer implements Layer {}

У меня также есть функция, которая имеет Layer в качестве аргумента

public void create(Layer layer){}

Я хотел бы использовать create(new VectorLayer()) но затмение выдает мне следующую ошибку:

Метод create(Layer) в типе SelectFeature не применим для аргументов (VectorLayer) VolexampleApplication.java /volExample/src/com/example/volexample

Я думаю, что обычно это должно работать. Так в чем здесь проблема?

PS:
VectorLayer, Layer а также SelectFeature.create() являются функцией и классом из обертки openlayers (библиотеки) для VAADIN.

2 ответа

Решение

Пример, который вы приводите, должен работать нормально.

Вы уверены, что Layer осуществляется VectorLayer такой же, как тот, который требуется SelectFeature, Вы можете убедиться в этом, проверив импорт в обоих классах (или указав полное имя, то есть имя пакета).

Я бы попробовал помочь компилятору:

final Layer layer = new VectorLayer();
SelectFeature.create(layer);
Другие вопросы по тегам