java.lang.ClasscastException: java.lang.Long нельзя преобразовать в java.lang.Double

Я написал код для java для Json, извлекая значение Sting со страницы, которая является широтой, из свойств страницы, выдавая error: java.lang.ClassCastException. Здесь я использую ValueMap, если он содержит это значение широты, тогда я должен сохранить его в Double. Пример кода

import org.apache.sling.api.resource.ValueMap
private static final String G_LAT = "37.7608337";
protected ValueMap pageProp;
Double lat = null;
if(pageProp.containsKey(G_LAT))

lat = (Double) pageProp.get(G_LAT); // Getting an exception here

Спасибо за любую помощь!


person User    schedule 20.02.2017    source источник
comment
Чтобы избежать плохого приведения, вы можете приводить к java.lang.Number, поскольку java.lang.Long наследуется от java.lang.Number. Затем используйте метод doubleValue() для полученного номера.   -  person cardman    schedule 20.02.2017
comment
Не могли бы вы предоставить некоторый синтаксис   -  person User    schedule 20.02.2017
comment
после попытки вышеуказанной ошибки компилятора синтаксиса, и это заставляет меня изменить тип lat на double   -  person User    schedule 20.02.2017
comment
Я думаю, вам нужно удалить полустолбец после if, у вас будет: if(pageProp.containsKey(G_LAT)) {Long longLat = (Long) pageProp.get(G_LAT); lat = longLat.doubleValue();}   -  person cardman    schedule 20.02.2017
comment
Все еще получаю ошибку компилятора   -  person User    schedule 20.02.2017


Ответы (2)


Вы можете использовать Double.parseDouble() для преобразования переменной String в double.

String str="2.036"
Double d=Double.parseDouble(str);
person rajat188    schedule 20.02.2017

Это похоже на исключение приведения, пожалуйста, обратитесь к следующему URL-адресу

java.lang.Long нельзя преобразовать в java.lang .Двойной

вы можете попробовать это вместо этого. lat = (Double) pageProp.get(G_LAT,long);

Метод get возвращает объект, который будет приведен к типу Double, что является сужающей операцией. Следовательно, попытайтесь преобразовать объект в задолго до приведения его к двойному.

person Chennai Coder    schedule 20.02.2017