테스트 코드compareTo()에서 equals() 사용?
public class TestClass implements java.lang.Comparable<TestClass> {
public String test;
@Override
public int compareTo(TestClass o) {
if (o == null) {
throw new NullPointerException();
}
return equals(o) ? 0 : test.toLowerCase().compareTo(o.test.toLowerCase());
}
@Override
public boolean equals(Object o) {
return (o == this) ? true : o instanceof TestClass ? test.equalsIgnoreCase(((TestClass) o).test) : false;
}
@Override
public int hashCode() {
return test.toLowerCase().hashCode();
}
}
말은, 난에서 '강력 추천'suggested을 따라 Comparable
를 구현하는 내 수업을 원하는 (방금 분명히 자신의 대소 문자를 구분 데이터 모델을 일으키고 더 나은 방법이있다, SSCCE을 준수합니다) API :
그것은 적극 권장하지만, 엄격하게 필요하지 않은 것을 (x.compareTo (Y) == 0) == (x.equals (y))는.
equals()
안에 compareTo()
을 사용 하시겠습니까? 물론 equals()
은 compareTo()
으로 전화하지 않습니다. 유사
: 당신은 compareTo() 안의 등호를 호출하기 전에 NPE 확인을하고 있습니다로 When to include what?
compareTo()에서 equals()를 사용하고 equals() 또는 compareTo()를 사용하는 경우에 대해서는 설명하지 않습니다. ;) 또한 String 클래스에서 equals() 및 compareTo()를 구현하지 않았으므로 여기서 범위를 벗어납니다. 테스트 코드는 compareTo()에서 equals()를 사용하는 방법을 실제로 시각화하는 것입니다. –
괜찮습니다. 그런데 :'a? 사실 : b? c : 거짓 '. 그것은'a || '에 대한 모호한 표현입니다. b && c'. 나. 돌아 오 == 이건 || instanceof TestClass && test.equalsIgnoreCase (((TestClass) o) .test)'같은 작업을 수행합니다. – Holger
그 점을 발견해 주셔서 감사합니다! :) 나는 진실/틀린 것을 타이핑 할 때 뭔가 비린내가 있다는 것을 알았다. –