2015-06-11 2 views
0

У меня есть класс Identifier<T>, который по существу представляет собой безопасную по типу оболочку вокруг UUID (поэтому класс Foo содержит Identifier<Foo>).Как передать Список <Идентификатор <Foo>> в метод со списком <Идентификатор <?>> параметр?

Класс FooStore имеет метод List<Identifier<Foo>> bulkReadIdentifiers().

В другом классе мне нужно превратить этот List<Identifier<Foo>> в List<UUID>. Реализация метода, который делает это для Foo, тривиальна, но как объявить метод таким образом, чтобы он работал для произвольных классов, т. Е. Bar вместо Foo?

Метод List<UUID> extractUuids(List<Identifier<?>> identifiers) вызывает ошибки компиляции, поскольку ? не соответствует Foo. Можно ли это решить без использования взлома, который включает в себя сырые списки и/или @SuppressWarnings?

+0

List <идентификатор> идентификаторов? или Список <Идентификатор > идентификаторы –

+0

обе версии до сих пор не скомпилированы :-( –

ответ

2

Вы можете сделать метод родовым:

<T> List<UUID> extractUuids(List<Identifier<T>> identifiers) 
+0

отлично, спасибо большое! –

Смежные вопросы