变量只能为null显示eclipse

时间:2012-03-23 06:17:07

标签: java eclipse

我已经有了像这样的方法

public ArrayList<T> GetDoctorDetail(String name)
{
    if (name!=null || !name.isEmpty() || name!="")
    {
        //Statements
    }
}

但在eclipse中!用黄线显示下划线        空指针访问:变量名在此位置只能为空。

为什么呢?什么是解决方案。

3 个答案:

答案 0 :(得分:10)

如果name为非null,则条件||运算符根本不会计算第二个操作数。因此,可以评估第二个操作数的情况是name为空时,在这种情况下它将抛出。

我怀疑你想要

if (name != null && !name.isEmpty())
{
    // Use name
}

或者可能:

if (name == null || name.isEmpty())
{
    // Show an error message
}

请注意,将字符串与==!=进行比较 几乎总是错误的做法,因为它会比较引用。您通常会使用equals代替。不仅如此,但无论如何它都没用 - 它只能等于“”,如果它是空的,那么它与第二个操作数完全相同。

答案 1 :(得分:1)

如果name = null,则oR条件的第一部分将失败。因此第二部分将抛出空指针异常。

编写该条件的正确方法是

if (name!=null && (!name.isEmpty() || name!=""))

答案 2 :(得分:0)

if (name != null && !name.isEmpty()) {
   // Now the name variable has valid content
}

注意 - 如果您创建“肯定”检查,逻辑总是更容易理解:

if (name == null || name.isEmpty()) {
   // Now name is either null or empty
} else {
   // Now the name has valid content
}

尽量避免检查“否定”状态的条件,例如“is not null”和“is not empty”。他们只是脑筋急转弯;)