以前在写程序的时候,碰到需要比较两个有可能为null的实例时,为了避免出现NullPointerException,经常用这样的一段代码来比较:
这样的程序,读起来真是挺拗口。我一直没有想到什么好的方法解决这个问题,直到今天在看到JDK的AbstractList源码的equals方法的实现时,看到这一段:
原来用三元运算符可以很好的解决这个问题,呵呵,我前面的程序可以改写成:
真是简洁多了!
Object obj1
=
"
abc
"
;
Object obj2 = " cde " ;
if ((obj1 == null && obj2 == null ) || (obj1 != null && obj1.equals(obj2))
|| (obj2 != null && obj2.equals(obj1))) {
System.out.println("equals");
}
Object obj2 = " cde " ;
if ((obj1 == null && obj2 == null ) || (obj1 != null && obj1.equals(obj2))
|| (obj2 != null && obj2.equals(obj1))) {
System.out.println("equals");
}
这样的程序,读起来真是挺拗口。我一直没有想到什么好的方法解决这个问题,直到今天在看到JDK的AbstractList源码的equals方法的实现时,看到这一段:
if
(
!
(o1
==
null
?
o2
==
null
: o1.equals(o2)))
return false ;
return false ;
原来用三元运算符可以很好的解决这个问题,呵呵,我前面的程序可以改写成:
Object obj1
=
"
abc
"
;
Object obj2 = " cde " ;
if (obj1 == null ? obj2 == null : obj1.equals(obj2))
System. out .println( " equals " );
Object obj2 = " cde " ;
if (obj1 == null ? obj2 == null : obj1.equals(obj2))
System. out .println( " equals " );
真是简洁多了!