Java - Enumerable.Cast (), как C #? - PullRequest
3 голосов
/ 16 января 2012

Есть ли в Java эквивалент до Enumerable.Cast() из C #?Я хочу присвоить ArrayList<MyType> переменной, объявленной как List<Object>.Затмение ворчит: «Несоответствие типов: невозможно конвертировать из ArrayList<MyType> в List<Object>».Я просто использовал List и ArrayList без шаблонов, но об этом предупреждает компилятор, и я хотел убрать некоторые предупреждения.

1 Ответ

7 голосов
/ 16 января 2012

Было бы небезопасно разыграть это, если вы собираетесь добавить в список.Однако, если вы хотите только извлечь из списка, который вы можете использовать:

ArrayList<MyType> specificList = new ArrayList<MyType>();
List<? extends Object> generalList = specificList;

Или ближе к Enumerable.Cast будет использоваться Iterable:

Iterable<? extends Object> generalIterable = specificList;

Обидно, что вам даже нужно указывать здесь подстановочный знак (я был удивлен, что вы это сделали), учитывая, что Iterable является интерфейсом «только для чтения».

Для получения дополнительной информации о дженериках Javaсм. Часто задаваемые вопросы по Java Generics .

...