检查对象是否有数据?

时间:2015-02-20 05:19:01

标签: java object null

我正在调用方法来根据传入的文本获取数据,这些文本将ping到数据库中。

所以我想检查是否有数据到达对象。

代码:

Method m = service.getMethodDataByFilter(text);

我试过了:

if(m == null){
    System.out.println("In NULL");
}

但它没有进入它内部。

我也尝试过:

if(m.getName().isEmpty()){
    System.out.println("In NULL");
}

然后它会导致NPE处于状态,因为没有收到任何数据。

那么如何检查对象内是否有数据?

方法类:

public class Method {
    private Integer id;
    private String name;
    // getter-setter
}

更新

只需尝试Ruchira

    if(m== null){
        System.out.println("m is null");
    }else if(m.getName()==null){
        System.out.println("m.getName() is null");
    }else if(m.getName().isEmpty()){
        System.out.println("m.getName() is empty");
    }

仍然抛出相同的NPE

完整的方法代码:

public MethodDTO getMethod(String text){
    Method m = service.getMethod(text);

    if(m == null){
        System.out.println("m is null");
    }else if(m.getName()==null){
        System.out.println("m.getName() is null");
    }else if(m.getName().isEmpty()){
        System.out.println("m.getName() is empty");
    }

    ModelMapper mapper = ModelMap.methodMapper();
    return mapper.map(m, MethodDTO.class);
}

5 个答案:

答案 0 :(得分:0)

您需要将代码更改为:

if(myObject==null){   // check if object is null
System.out.println("myObject is NULL");
}
else{ // myObject should not be null here
if(myObject.getField1()==null) // check for fields within the object
{
System.out.println("field1 is NULL");
}
if(myObject.getField2()==null)
{
System.out.println("field2 is NULL");
}
...
}

注意,如果对象为null,则尝试访问任何非静态字段/方法将导致NPE。

答案 1 :(得分:0)

试试这个if ( m == null || m.getName()== null)。请注意,除了m之外,其名称也可以是null

答案 2 :(得分:0)

m == null
当对象m不为null时,

将返回false,但它不会在对象内递归检查其所有属性。

m.getName()

似乎返回null但是即使这个语句也不会抛出NPE。但是如果你打电话m.getName().isEmpty()会抛出NPE。你最好这样检查:

if (m.getName() == null) //assuming you have already checked for m being null

答案 3 :(得分:0)

解释。

if(m == null){
  System.out.println("In NULL");
}

由于ifmnull,因此if(m.getName().isEmpty()){ System.out.println("In NULL"); } 内没有NullPointerException。但是

m.getName()

由于null if(m == null){ System.out.println("m is null"); }else if(m.getName()==null){ System.out.println("m.getName() is null"); }else if(m.getName().isEmpty()){ System.out.println("m.getName() is empty"); } ,因此您获得{{1}}。

所以你可以尝试如下

{{1}}

答案 4 :(得分:0)

检查对象是否为空或不是这样:

if(m != null && m.getName != null) {
 // Object m is not null and m.getName is also not null
} else {
 // Either Object m is null or m.getName is null or both are null
}