0

我有一个来自 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;
  }
}

当我使用 String 运行此代码时:<person><lastname>001008</lastname></person>作为 XML 输入,我得到了 aNumberFormatException<person><lastname>001009</lastname></person>

其他数字也可以,例如:001000、001007、001006、001005。

你知道可能是什么问题吗?

4

1 回答 1

0

当你用一个零填充一个数字时,java认为这个数字是一个八进制数。

八进制数只能有以下数字:0,1,2,3,4,5,6 & 7。数字 8 和 9 不能用于八进制数。

您指定的数字是 01008,因此会引发 NumberFormatException。

于 2013-04-17T09:45:41.823 回答