Java 中将对象与 null 进行比较
我正在尝试使用以下语法验证对象是否为 null
:
void renderSearch(Customer c) {
System.out.println("search customer rendering>...");
try {
if (!c.equals(null)) {
System.out.println("search customer found...");
} else {
System.out.println("search customer not found...");
}
} catch (Exception e) {
System.err.println("search customer rendering error: "
+ e.getMessage() + "-" + e.getClass());
}
}
我收到以下异常:
搜索客户渲染错误:null
类 java.lang.NullPointerException
我认为我正在使用 if 和 else 语句考虑这种可能性。
I am trying to verify whether an object is null
or not, using this syntax:
void renderSearch(Customer c) {
System.out.println("search customer rendering>...");
try {
if (!c.equals(null)) {
System.out.println("search customer found...");
} else {
System.out.println("search customer not found...");
}
} catch (Exception e) {
System.err.println("search customer rendering error: "
+ e.getMessage() + "-" + e.getClass());
}
}
I get the following exception:
search customer rendering error: null
class java.lang.NullPointerException
I thought that I was considering this possibility with my if and else statement.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您不是在比较对象本身,而是在比较它们的引用。
尝试
使用 if 语句。
You're not comparing the objects themselves, you're comparing their references.
Try
in your if statement.
该行正在调用 c 上的 equals 方法,如果 c 为 null,那么您将收到该错误,因为您无法对 null 调用任何方法。
相反,你应该使用
That line is calling the equals method on c, and if c is null then you'll get that error because you can't call any methods on null.
Instead you should be using
使用
c == null
,因为您比较的是引用,而不是对象。Use
c == null
, since you're comparing references, not objects.使用 c==null
equals 方法(通常)需要一个 customer 类型的参数,并且可能会调用该对象的某些方法。 如果该对象为 null,您将得到 NullPointerException。
此外,c 可能为 null,并且 c.equals 调用可能会抛出异常,无论传递的对象如何
Use c==null
The equals method (usually) expects an argument of type customer, and may be calling some methods on the object. If that object is null you will get the NullPointerException.
Also c might be null and c.equals call could be throwing the exception regardless of the object passed
在这种情况下,对象 c 很可能为 null。
您可能想要覆盖 Customer 的 equals 的默认实现,以防您需要以不同的方式表现它。
在调用其上的函数之前还要确保传递的对象不为空。
Most likely Object c is null in this case.
You might want to override the default implementation of equals for Customer in case you need to behave it differently.
Also make sure passed object is not null before invoking the functions on it.
现实情况是,当 c 为 null 时,您正在尝试执行 null.equals,因此这会生成异常。 进行比较的正确方法是“null”.equals(c)。
The reality is that when c is null, you are trying to do null.equals so this generates an exception. The correct way to do that comparison is "null".equals(c).
如果 C 对象具有 null 值,则使用以下语句来比较 null 值:
if C object having null value then following statement used to compare null value: