2017-02-20 4 views
1

Ich habe einen Code für Java nach Json geschrieben, während ein Sting-Wert von einer Seite abgerufen wird, die Latitude von einer Seite Eigenschaften wirft ein error: java.lang.ClassCastException. Hier verwende ich ValueMap, wenn es diesen Breitenwert enthält, dann muss ich es in Double speichern. Das Codebeispiel istjava.lang.ClasscastException: java.lang.Long kann nicht in java.lang.Double umgewandelt werden

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 

Vielen Dank für jede Hilfe!

+0

Um schlechte Cast zu vermeiden, können Sie in 'java.lang.Number' umwandeln, wenn' java.lang.Long' von 'java.lang.Number' erbt. Verwenden Sie dann die Methode 'doubleValue()' für die abgerufene Zahl. – cardman

+1

Können Sie bitte einige Syntax geben – User

+0

'Long longLat = (Long) pageProp.get (G_LAT);' lat = longLat.doubleValue(); ' – cardman

Antwort

0

Sie können Double.parseDouble() verwenden, um eine String-Variable in Double zu konvertieren.

String str="2.036" 
Double d=Double.parseDouble(str); 
0

Dies scheint zu einer Besetzung Ausnahme bitte die folgende URL

java.lang.Long cannot be cast to java.lang.Double

können Sie versuchen, diese stattdessen verweisen. lat = (Double) pageProp.get (G_LAT, lang);

Die get-Methode gibt ein Objekt zurück, das in den Double-Code umgewandelt wird, was eine einschränkende Operation darstellt. Versuchen Sie daher, das Objekt zu konvertieren, bevor Sie es in ein Double-Objekt umwandeln.

Verwandte Themen