иерархия объектов Java и передача объектов в функции - PullRequest
2 голосов
/ 08 сентября 2010

Я создал TreeMap примерно так:

TreeMap<Integer, ArrayList<MyClass>> wrap = new TreeMap<Integer, ArrayList<MyClass>>();

Я создал конструктор примерно так:

public foo (TreeMap<Integer, Collection<Spot> > objects) {
     this.field = objects;
}

Однако, затмение дает мне красный волнистый звук, когда я использую конструктор, с моей переменной wrap в качестве единственного параметра:

The constructor foo(TreeMap<Integer,ArrayList<Spot>>) is undefined

ArrayList - это тип коллекции ... да?Так почему же это не работает?

1 Ответ

2 голосов
/ 08 сентября 2010

Обобщения не работают так, как вы думаете, в этом случае.

Вам нужно что-то похожее на:

public foo (TreeMap<Integer, ? extends Collection<Spot> > objects) {
     this.field = objects;
}

? называется групповым символом.Это позволит вам передать Collection или что-либо, что расширяет / реализует Collection.

Строка ? extends Collection<Spot> выглядит следующим образом:

Нечто, расширяющее коллекцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...