我正在调用方法来获取数据,按照传递的文本,将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条答案
按热度按时间vojdkbi01#
试试这个
if ( m == null || m.getName()== null)
。注意,除了m之外,它的名称也可以是null
。jv4diomz2#
您需要将代码更改为:
注意,如果对象为null,那么尝试访问其上的任何 * 非静态 * 字段/方法将导致NPE。
zvokhttg3#
解释。
因为里面的
if
不输入,因为m
不是null
。但是这里你得到
NullPointerException
,因为m.getName()
是null
。所以你可以尝试如下
eqfvzcg84#
当对象
m
不为null,但它不递归地检查对象内部的所有属性时,将返回false。似乎返回null,但即使此语句也不会抛出NPE。但是,如果你调用
m.getName().isEmpty()
,会抛出NPE。你最好这样检查:lnlaulya5#
检查对象是否为null,如下所示: