IF声明中的死代码警告

Muh*_*d B 4 java warnings

我不知道为什么eclipse在我的这段代码中警告我"死代码":

    PreparedStatement p = conn.prepareStatement("SELECT name FROM user WHERE age = ? , city = ?");
    p.setInt(1, (String) parameters.get("age"));
    p.setString(2, (String) parameters.get("city"));

    if (p == null) {
        log.warn("User is not available");
        return results;
    }
Run Code Online (Sandbox Code Playgroud)

警告在日志中,任何人都能告诉我这个原因吗?谢谢.

Joa*_*uer 9

p不能null在这一点上,仅仅是因为你已经呼吁setIntsetStringp,如果它是null有,那么它会抛出NullPointerException,从而达到永不您if.

另请注意,根据其文档,preparedStatement不能再返回null.它只能返回有效语句或抛出异常.在后一种情况下,你if的意志无法达成.然而,这个事实并没有被编译器检查(因为理论上可以返回破坏的实现).prepareStatement null