
218
자바에서 코틀린으로
객체의 모든 프로퍼티를 사용한 암호학적 해시
1
는 어떨까? 이런 해시는 계산 (불변 객체의 경
우)이다. 하지만 계산 비용이 많이 들기 때문에
hash
라는 프로퍼티가 아니라
hash
()
라는 함
수여야 한다. 저자들은 이름에 메서드의 계산 비용에 대한 힌트를 덧붙이기를 원한다.
data class PersonWithProperties(
val givenName: String,
val familyName: String,
val dateOfBirth: LocalDate
) {
fun computeHash(): ByteArray =
someSlowHashOf(givenName, familyName, dateOfBirth.toString())
}
계산을 미리해서 필드에 저장하면 이 값을 프로퍼티로 만들 수 있다.
data class PersonWithProperties(
val givenName: String,
val familyName: String,
val dateOfBirth: LocalDate
) {
val hash: ByteArray =
someSlowHashOf(givenName, familyName, dateOfBirth.toString())
}
이 구현은
hash
접근 여부와 관계없이 모든 인스턴스 생성이