Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 变量只能为null,以显示eclipse_Java_Eclipse - Fatal编程技术网

Java 变量只能为null,以显示eclipse

Java 变量只能为null,以显示eclipse,java,eclipse,Java,Eclipse,我有一个这样的方法 public ArrayList<T> GetDoctorDetail(String name) { if (name!=null || !name.isEmpty() || name!="") { //Statements } } public ArrayList GetDoctorDetail(字符串名) { if(name!=null | |!name.isEmpty()| | name!=“”) { //声明 }

我有一个这样的方法

public ArrayList<T> GetDoctorDetail(String name)
{
    if (name!=null || !name.isEmpty() || name!="")
    {
        //Statements
    }
}
public ArrayList GetDoctorDetail(字符串名)
{
if(name!=null | |!name.isEmpty()| | name!=“”)
{
//声明
}
}
但是在月食中!用黄线下划线显示名称 空指针访问:变量名只能在此位置为空


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

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

我猜你想要

if (name != null && !name.isEmpty())
{
    // Use name
}
或者可能:

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

请注意,将字符串与
==
进行比较=几乎总是错误的,因为它比较引用。您通常会使用
等于
。不仅如此,它在这里也毫无用处——如果它是空的,它只能等于“”,因此它的条件与第二个操作数完全相同。

oR条件的第一部分只有在name=null时才会失败。因此,第二部分将抛出空指针异常

写入该条件的正确方法是

if (name!=null && (!name.isEmpty() || name!=""))
注意-如果您创建“肯定”检查,逻辑总是更容易理解:


尽量避免检查“负”状态的条件,如“不为空”和“不为空”。他们不过是脑筋急转弯;)

您还可以在isEmpty()检查“”时删除最后一个条件
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
}