Java 检查对象是否有数据?

Java 检查对象是否有数据?,java,object,null,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"); } 然后,由

我正在调用方法以根据传递的文本获取数据,该文本将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
}
更新

试一试

仍然抛出相同的
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);
}

您需要将代码更改为:

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。

如果(m==null | | m.getName()==null)尝试此
。注意,除了m之外,它的名称也可以是
null

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
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
}
解释

if(m == null){
  System.out.println("In NULL");
}
自内
if
未输入,因为
m
不是
null
。但是

if(m.getName().isEmpty()){
  System.out.println("In NULL");
}
因为
m.getName()
null
,所以在这里可以得到
NullPointerException

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

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

if (m.getName() == null) //assuming you have already checked for m being 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
}

请显示
getMethodDataByFilter
的代码,因为
m
不是
null
而是
m。getName()
null
请显示它抛出空指针异常的代码发布完整代码。。和完整的堆栈跟踪你正在得到。。。例外是其他地方。我认为你的服务是空的。这就是为什么它抛出null pointerNo,
如果(m.getName==null)
仍然抛出
NPE
@javakillerღ m、 当m为null或者在getName方法中做了一些愚蠢的事情时,getName将抛出NPE。但是我在
getName
中没有做任何愚蠢的事情,只是初始化了该值。@javakillღ 使用最新副本更新问题中的代码。否,
如果(m==null | | m.getName()==null)
仍在
m.getName()中显示
NPE
ღ 不,永远不会
如果(m==null | | m.getName()==null)
不会给你
NPE
我做出合理的假设,
getName
是一个简单的getter。如果是这种情况,代码将永远不会给出NPE,因为
|
将短路。那么如何检查
m
是否接收到数据?@javakillerღ 你可以检查我的答案的最后一部分。在没有其他选项的情况下尝试了所有3个选项,但它在
m.getName()==null
处抛出
NPE
,如果删除它,则在
m.getName().isEmpty()处抛出相同的选项ღ 您必须验证所有步骤。编码不是一个简单的问题skipping@RuchiraGayanRanaweera-我有点不同意
m
m.getName()
处于不同的级别。使用
if(m==null){}else{//检查m.someMethod()的字段,这里}
更有意义。