java 检查对象是否有数据?

esbemjvw  于 2023-05-15  发布在  Java
关注(0)|答案(5)|浏览(177)

我正在调用方法来获取数据,按照传递的文本,将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);
}
vojdkbi0

vojdkbi01#

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

jv4diomz

jv4diomz2#

您需要将代码更改为:

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。

zvokhttg

zvokhttg3#

解释。

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

因为里面的if不输入,因为m不是null。但是

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");
 }
eqfvzcg8

eqfvzcg84#

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
lnlaulya

lnlaulya5#

检查对象是否为null,如下所示:

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
}

相关问题