예 : Java의 기본 계약 확인이 있습니까? 해시 코드와 equals 함수 사이의 계약?Java의 계약 확인 - 내장? 예 : 해시 코드/동등한
이 질문에 대해서는 hashcode/equals 계약을 예로 들겠습니다.하지만 저는 일반적으로 계약 체킹에 관심이 있습니다. 나는 같고 해시 코드가 자바에서 "계약"만족해야하는 여러 장소에서 읽고 :
- 같음이
- 동일 개체를 반복 호출에 일치해야합니다 또한 equivalence relation의 세 가지 규칙을 준수해야합니다은 동일한 해시 코드를 의미한다
나는 조건을 이해하며, 나에게 의미가있다. 그러나 궁금한 점은 개발자가 버그 코드를 작성하지 않겠다는 본질적으로 강력한 가이드 라인이 종이에 적혀있는 것인가 아니면 컴파일 타임 또는 런타임 예외로 Java에서 발견 할 수있는 것인지 궁금합니다.
컴파일 타임이나 런타임 예외로 Java에서 발견되지 않습니다. (코드 작성) cont에 충실 ract. – nbokmans
같으면 같은 해시 코드를 암시하지 않으면 이상한 동작이 발생할 수 있습니다. 예 : 동일한 객체가 해시 맵의 다른 버킷에 매핑 될 수 있습니다. –
고마워요. 그게 내가 생각했던거야. 따라서 기본적으로 Java에 대한 맹목적인 코드를 작성하지 않는 것이 좋습니다.하지만 계약을 위반하는 프로그램을 이론적으로 작성할 수는 있지만 수년 동안 버그없이 컴파일되고 실행될 수 있습니다. 명백 해졌다. –