Я прочитал ниже в документе Spring 3.0:
Строгая типизированная коллекция (только Java 5+)
В Java 5 и более поздних версиях можно использовать строго типизированные коллекции (используя универсальные типы). То есть можно объявить тип Collection так, чтобы он мог содержать только элементы String (например). Если вы используете Spring для внедрения зависимостей строго типизированной коллекции в bean-компонент, вы можете воспользоваться поддержкой преобразования типов Spring, чтобы элементы ваших экземпляров строго типизированной коллекции были преобразованы в соответствующий тип перед добавлением в Коллекция.
public class Foo {
private Map<String, Float> accounts;
public void setAccounts(Map<String, Float> accounts) {
this.accounts = accounts;
}
}
<beans>
<bean id="foo" class="x.y.Foo">
<property name="accounts">
<map>
<entry key="one" value="9.99"/>
<entry key="two" value="2.75"/>
<entry key="six" value="3.99"/>
</map>
</property>
</bean>
</beans>
Когда свойство account объекта foo bean подготовлено для внедрения, общая информация о типе элемента строго типизированной карты доступна путем отражения. Таким образом, инфраструктура преобразования типов Spring распознает различные значения элементы типа Float, а строковые значения 9,99, 2,75 и 3,99 преобразуются в действительный тип Float.
Как это может быть возможным? Насколько я знаю, информация об универсальном типе стирается во время компиляции.