2013-04-15 3 views
0

xstream에서 매우 이상한 동작이 있습니다. 내 테스트 코드는 다음과 같습니다 001000, 001007, 001006하십시오 NumberFormatException 또한 <person><lastname>001009</lastname></person>NumberFormatException xstream

다른 번호가 작동으로 잘, 예를 들어있어 I XML 입력으로 <person><lastname>001008</lastname></person> :

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; 
    } 
} 

나는이 문자열과 코드를 실행하면 , 001005.

어떤 문제인지 알고 계십니까?

+0

스택 추적을 표시 할 수 있습니까? – Cygnusx1

답변

0

패드를 숫자 0으로 남겨두면 숫자가 8 진수로 간주됩니다.

8 진수는 0,1,2,3,4,5,6 & 숫자 만 가질 수 있습니다. 숫자 8과 9는 8 진수로 사용할 수 없습니다.

지정한 번호가 01008이므로 NumberFormatException이 발생합니다.