我正在尝试登录Google用户的googleID。我能够将此值作为String对象获取,但是我希望能够将其存储为Long对象(如长整数)。
但是,当我这样做时,我会遇到错误:
java.lang.NumberFormatException: Invalid long: "123456789012345678901"
at java.lang.Long.invalidLong(Long.java:124)
at java.lang.Long.parse(Long.java:364)
at java.lang.Long.parseLong(Long.java:352)
at java.lang.Long.parseLong(Long.java:318)
at java.lang.Long.valueOf(Long.java:476)
我要转换的字符串长度为21个字符。为什么会抛出这个错误?我该怎么做才能解决它?
我的代码在
下面 if (Plus.PeopleApi.getCurrentPerson(m_gacGoogleApiClient) != null) {
Person perGooglePerson = Plus.PeopleApi.getCurrentPerson(m_gacGoogleApiClient);
String strGoogleID = perGooglePerson.getId();
Long lonGoogleID = Long.valueOf(strGoogleID);
}
答案 0 :(得分:1)
最大long
值为2 63 - 1 = 9223372036854775807L。您的21位数字太大而无法放入long
。为避免错误,您可以将其保留为String
,也可以使用BigInteger
。