2013-04-15 5 views
0

У меня очень странное поведение от xstream. Мой тестовый код:NumberFormatException xstream

import com.thoughtworks.xstream.XStream; 
import com.thoughtworks.xstream.io.HierarchicalStreamReader; 
import com.thoughtworks.xstream.io.xml.DomDriver; 

public class ConvertStringToNumber{ 

    public static void main(String[] args) { 

    XStream xstream = new XStream(new DomDriver()); 
    xstream.alias("person", Person.class); 

    Person c = (Person) xstream.fromXML("<person><code>01008</code></person>"); 
    System.out.println(c); 
    } 
} 

class Person { 
    private int code; 
    public void setCode(int code){ 
    this.code=code; 
    } 
    public int getCode(){ 
    return this.code; 
    } 
} 

Когда я запускаю этот код строки: <person><lastname>001008</lastname></person> в качестве входного XML я получил NumberFormatException, а также с <person><lastname>001009</lastname></person>

Другие номера прекрасно работают, например: 001000, 001007, 001006 , 001005.

У вас есть идеи, что может быть проблемой?

+0

вы можете показать нам стек – Cygnusx1

ответ

0

Когда вы оставили пэд, число с одной нулевой java считает число восьмеричным числом.

Октальные номера могут содержать только следующие цифры: 0,1,2,3,4,5,6 & 7. Числа 8 и 9 не могут использоваться в восьмеричных номерах.

Номер, указанный вами, - 01008, поэтому он выбрасывает NumberFormatException.