2013-06-14 3 views
1

Вот ситуация, у меня есть Объект на Карте, который я явно знаю, чтобы содержать экземпляр Long, и мне нужно превратить это значение в строку, но продолжайте получать несовместимые ошибки типа. Вот что мой код выглядит следующим образом:Java Cast from Object to long to String

Map<String, Object> map = ...; 
Object obj = new Long(31415L); 
String str = Long.valueOf((long)map.get("id")); //Problem line 

Это дает:

Inconvertible types. 
Found : java.lang.Object 
Required: long 

Любые предложения о том, как обойти это?

+1

Вам нужно бросить на (Long) не (длинный). Примитивы не могут быть использованы для объектов – greedybuddha

+0

Хорошо, gotcha. Был ошибочно, потому что метод Long.valueOf нужен примитив, поэтому я попытался сделать это XD Thanks. – Mastergeek

ответ

5

Вы можете просто сделать

String str = map.get("id").toString(); 
+0

Спасибо большое. Это работало как прелесть. – Mastergeek

+0

Добро пожаловать :). –

5

Использование, например:

String.valueOf(map.get("id")) 

Проблема заключается в том, что вы пытаетесь привести объект к примитивному типу. Это не сработает.

Но так как значения вашей карты будет Long S в любом случае (коллекции не может содержать примитивные типы, за исключением специализированных реализаций, таких как найдено в GNU находку), обратите внимание на @ ответ BheshGurung в ...

0
You can use the toString function; 

public String toString() { 
    return String.valueOf(map.get("id")) 
} 



    String str = map.get("id").toString(); 
0

у вас есть 2 проблемы здесь:

  1. Вы создали * L * ong, а не * l * ong. Поэтому вам нужно отбросить на a * L * ong, а не * l * ong.

  2. Для получения строкового представления * L * ong необходимо называть toString() на нем.

Используйте это: String str = ((Long)map.get("id")).toString();