2017-03-14 4 views
-3

의 인스턴스에 대한 정체성에 민감한 작업 (==, 아이덴티티 해시 코드, 또는 동기화)를 사용해서는 안 나는 Java LocalDateTime Documentation은 왜 현재 java.time API를 공부하고 LocalDateTime

에 다음과 같은 문구가 발생했습니다

이것은 값 기반 클래스입니다. LocalDateTime의 인스턴스에 대해 IDC (identity equilient) 작업 인 (참조 동등성 (==), ID 해시 코드 또는 동기화 포함)을 사용하면 예기치 않은 결과가 나타날 수 있으므로 피해야합니다. equals 메서드는 비교에 사용해야합니다.

그래서 LocalDateTime의 인스턴스에서 신원 확인 작업 (참조 평등 (==), ID 해시 코드 또는 동기화 포함)을 사용하지 않는 것이 좋습니다.

+6

[이 링크] (https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=&hl=ko)를 비롯하여이 사이트에서 여러 번 묻는 질문이 있습니다. site : stackoverflow.com + java + equals + vs + % 3D % 3D & *). 이것들이 당신의 질문에 어떻게 대답하지 않습니까? 다음 단계는 소스 코드를 검사하여 equals 및 hashCode 재정의가 정확히이 특정 클래스에 어떻게 적용되는지 확인하고자하는 경우이를 확인하는 것입니다. –

+0

@HovercraftFullOfEels 귀하의 의견에 감사드립니다. "=="참조 비교기 반면 "equals()"메서드는 두 인스턴스의 값이 같은지 비교하는 이해합니다. 그러나 "가치 기반 계급"이 의미하는 바는 누구도 설명하지 못했습니다. 또한 그들은 "LocalDateTime"클래스로 "신원 해시 코드, 동기화"를 피해야하는 이유를 설명하지도 않습니다. 그래서 나는 이러한 질문에 근거하여 나의 질문을 다시 열 수 있다면 궁금한 점이 있습니까? 시간 내 줘서 고마워. – Thor

+0

@HovercraftFullOfEels 더 구체적이고 "=="및 "equals()"와 덜 관련되도록 질문을 편집했습니다 – Thor

답변

1

javadoc에서 "값 기반"은 this page에 대한 링크가 있으며, 이는 의미를 자세히 설명합니다.

나머지는 본질적으로 인스턴스 신원에 대해 아무 것도 가정하지 말라고합니다. 예를 들어, 두 번 호출 된 LocalDate.of(y, m, d)은 동일한 인스턴스를 반환 할 수도 있고 그렇지 않을 수도 있습니다.

아마도 자바 10을 염두에두고 그 진술은 value objects을 소개 할 것입니다.