空检查的条件语句

时间:2016-03-02 13:50:16

标签: java

我有一个条件陈述如下

if (Sizeval != null) {
            query.addFilterQuery("size:" + Sizeval);
        }

在调试中,我可以看到 Sizeval = null

的值

我从请求对象获取此值,如下所示

Sizeval = (String) request.getParameter("Attr");

但即使Sizeval为null,它也会执行query.addFilterQuery语句。

任何纠正这个问题的建议plz

3 个答案:

答案 0 :(得分:3)

重新解释您的问题。给定

HttpServletRequest requst = ...
String Sizeval = (String) request.getParameter("Attr");
if (Sizeval != null) {
    query.addFilterQuery("size:" + Sizeval);
}

您看到if的正文已执行(暗示Sizeval不为空)但仍然Sizeval 似乎为空(如调试器或构造过滤器。)

说明:Sizeval不为null,但具有文字值"null"。这将添加"size:null"过滤器查询。此外,当在日志或调试器中查看变量时,它似乎是null

验证执行

if (Sizeval != null) {
    if ("null".equals(Sizeval))
        throw new IllegalArgumentException("got it");
    query.addFilterQuery("size:" + Sizeval);
}

答案 1 :(得分:1)

request.getParameter("Attr");返回null,但您将值转换为String

当您检查if (Sizeval != null) Sizeval时,值为" null"而不是null对象。

request.getParameter已经返回Stringnull,所以只需删除广告。

答案 2 :(得分:-1)

不是100%但是:

如果' request.getParameter(" Attr")'返回null,然后将其转换为String,这不会变成String' null'?

之前遇到过这个问题。