Запуск Java 1.8 (и Spring 4.0, который отвечает за некоторые из этих проводов), у меня есть следующий код:Java - класс литая исключение из неправильного типа
public void doStuff(String color, Collection<String> ids) {
for (String id : ids) {
На этой последней строке, я получаю исключение:
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
ToString возвращений коллекции: [521356090]
Он передается этому методу из этого кода:
doStuff("green", this.regionToIds.get(3L))
Почему я получаю это исключение? Почему у Set, а затем на коллекции есть объект, с которым связана моя петля foreach?
Этот класс подключен в качестве ресурса:
private Map<Long, Set<String>> regionToIds;
@Resource(name = Config.REGION_TO_IDS)
public void setRegionToIds(
final Map<Long, Set<String>> regionToIds) {
this.regionToIds = regionToIds;
}
конфигурационный файл выглядит следующим образом:
@Bean(name = REGION_TO_IDS)
public Map<Long, Set<String>> getRegionToIds() { .. }
Я на самом деле просто заметил, что у меня есть два фасоль, определенные в моем файле Config, и возвращаемое значение является значением другого компонента, который является Map<Long, List<Long>>
. Однако у него есть совершенно другое имя компонента, поэтому я не понимаю, почему этот ресурс втягивает неправильный компонент.
Ошибка кажется довольно понятной: 'this.setOfStringsByLong.get (3L)' либо 1), не смог вернуть коллекцию и/или 2), не сумев преобразовать длинный элемент в элемент String. Правильно? –
FoggyDay
Можете ли вы дать нам более подробную информацию о setOfStringsByLong? Каков тип возвращаемого результата? Можете ли вы поделиться источником/API для setOfStringsByLong? –
Вопросы поиска справки по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. –