即使在字符串null或空检查之后,Android Java异常

时间:2014-10-10 14:41:06

标签: java android string null

我真的不明白为什么java.lang.NumberFormatException:无效的长:" null"发生在这里。

问题片段如下所示。

try {
        userid = ((JSONObject) msg.obj).getString("userid");
        if (userid.equals("") || userid.isEmpty() || null==userid) {
                onClickLogout();
                return;
        } else {
            client.setUserid(Long.parseLong(userid));
       }
    } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            onClickLogout();
            return;
    }

行client.setUserid(Long.parseLong(userid));得到以下异常

java.lang.NumberFormatException: Invalid long: "null"
at java.lang.Long.invalidLong(Long.java:125)
at java.lang.Long.parse(Long.java:362)
at java.lang.Long.parseLong(Long.java:353)
at java.lang.Long.parseLong(Long.java:319)
at client.setUserid(Long.parseLong(userid));

重点是即使在代码中的userid的空和空检查之后也会发生null异常。我这里有什么问题?请查看专家!

3 个答案:

答案 0 :(得分:2)

字符串而不是引用是null

您可以添加"null".equals(userid)来测试null中的文字if值,您可以在其中检查各种形式的"无价值"。

答案 1 :(得分:1)

请务必先检查条件中的空值

if (null==userid || userid.isEmpty() || userid.equals("null") {

然后,在条件的下一个元素中,您确定userid不为null并且不会抛出NullPointerException

另外,在您的情况下,请检查userid是否包含" null"串

此外userid.equals("")userid.isEmpty()是相同的。

答案 2 :(得分:0)

您可以使用null中的实用方法isEmpty检查TextUtils

public static boolean isEmpty(CharSequence str) {
     return str == null || str.length() == 0;
}

isEmpty(CharSequence str)方法检查条件,null和长度。