Рассмотрим следующие 2 объявления метода:
1. public abstract <T extends MetaData> List<T> execute();
2. public abstract List<? extends MetaData> execute();
Оба кажутся возвращать список объектов, расширяющих MetaDatastrong > .
В чем разница между ними, пожалуйста?