나는 equals 메서드를 만들었습니다. 나는 두 가지 방법으로 그것을 할 수 있다고 생각하지만 자바는 동의하지 않는 것 같습니다. 제가 일하는 첫 번째 예가 여기 있습니다.|| operator
public class HelloWorld {
public boolean equals(Object rhs){
if(this==rhs){
return true;
}else if(rhs==null || this.getClass() != rhs.getClass()){
return false;
}else{
HelloWorld tmp =(HelloWorld)rhs;
return true;
}
}
public static void main(String[] args){
HelloWorld c = new HelloWorld();
System.out.println(c.equals(null));
}
}
그리고 두 번째 예제가 작동하지 않습니다. false를 반환하는 대신 nullpointerexception을 얻습니다.
public class HelloWorld {
public boolean equals(Object rhs){
if(this==rhs){
return true;
}else if(this.getClass() != rhs.getClass() || rhs==null){
return false;
}else{
HelloWorld tmp =(HelloWorld)rhs;
return true;
}
}
public static void main(String[] args){
HelloWorld c = new HelloWorld();
System.out.println(c.equals(null));
}
}
내 질문에 다음 ... 코드의 두 조각 사이의 유일한 차이는 첫 번째 조각 나는
rhs ==null ||...
를 작성한 그리고 두 번째 조각이의 반대편에 있다는 것입니다 는 OR 연산자는 너무
...|| rhs==null
이유는 첫 번째 경우는 나에게 Nullpointer하지만 않습니다 두 번째 경우를주지 못할 것이다? 왜 OR 연산자의 어느쪽에 부울 문을 쓰는 것이 중요할까요?