2015-06-26 2 views
9

Я получаю ответ в этой манере:java.lang.Long не может быть приведен к java.lang.String в Java

[{Id=1066276530, Key1=1815401000238}, {Id=1059632250, Key1=1815401000244}] 

Когда я итерацию и преобразовать значения в строку, она бросает меня в ошибка:

java.lang.Long cannot be cast to java.lang.String in Java 

for (Map<String, String> map : leadIds) { 
     for (Map.Entry<String, String> entry : map.entrySet()) { 
      String applicationNumber = (String) entry.getValue(); 
     } 
} 

Я хочу преобразовать значение в строку. Есть ли здесь проблема?

+6

Кажется, что вы принудительно использовали дженерики, чтобы заставить компилятор думать, что у вас есть «Map », когда у вас есть «Map ». Пожалуйста, покажите объявление 'leadIds'. –

ответ

7

Использование String.valueOf() вместо литья:

for (Map<String, Long> map : leadIds) { 
     for (Map.Entry<String, Long> entry : map.entrySet()) { 
      String applicationNumber = String.valueOf(entry.getValue()); 
     } 
} 
+1

'Entry ' уже имеет 'getValue' как' String'. Никакое количество добавлений произвольных вызовов 'toString' не изменит этого. Проблема связана с дженериками. –

+0

Хорошо, я знаю вашу проблему. Не могли бы вы обработать код, обрабатывающий входные данные? – codeaholicguy

1

Поскольку String и Long совершенно разные типы вы не можете бросить их, но вы можете использовать статический метод String.valueOf(Long value) и обратную Long.valueOf(String value).

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