hashcode
Last updated
Last updated
๊ฒฐ๊ณผ๊ฐ
์ฝํ๋ฆฐ์์ ==๋ ๋ ผ๋ฆฌ์ ๋๋ฑ์ฑ ๋น๊ต๋ฅผ, ===๋ ์ฃผ์ ๋น๊ต(๋ฌผ๋ฆฌ์ ๋๋ฑ์ฑ ๋น๊ต)๋ฅผ ํ๋ค. Test class์์๋ equals(), hashcode()๊ฐ ์ฌ์ ์ ๋์ง ์์์ผ๋ฏ๋ก ๊ฒฐ๊ณผ๊ฐ๋ค์ด false๊ฐ ๋์จ๋ค. data๋ฅผ ์ ์ธํ ์๋ ์ฝ๋๋ฅผ ๋ณด์.
๊ฒฐ๊ณผ๊ฐ
Test ํด๋์ค์ data๋ง ๋ถ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฒด ๋ด๋ถ ๊ฐ์ ๋น๊ต๊ฐ ๊ฐ๋ฅํด์ก๋ค. ์ด data class๋ dto์์ ์์ฃผ ์ฌ์ฉํ๊ฒ ๋๋ฏ๋ก ์ ๋ ํด๋์ด์ผ ํ๋ค.
(์ฐธ๊ณ ๋ก ์ฝํ๋ฆฐ์์ ==๋ ๋ด๋ถ์ ์ผ๋ก equals()๋ฅผ ํธ์ถํ๋ค.)
๋ํ, data class์ hashcode๋ ๋ ผ๋ฆฌ์ ๊ฐ์ด ๊ฐ๋ค๋ฉด ๊ฐ์ ๊ณ ์ ๊ฐ์ ๋ฐํํ๋ค. ์ฆ, ์์ c.hashCode()์ d.hashCode()๋ ๊ฐ์ ๊ฐ์ ๋ฐํํ๋ค. ์ผ๋ฐ class์ hashcode๋ ๋ ผ๋ฆฌ์ ๊ฐ์ด ๊ฐ์๋ ๋ค๋ฅธ ๊ณ ์ ๊ฐ์ ๋ฐํํ ๊ฒ์ด๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ println(c===d)์ ๊ฒฐ๊ณผ๊ฐ์ด false๊ฐ ๋์ค๋ ๊ฒ์ hashCode()๋ ๊ฐ์ง๋ง ์ค์ ์ฃผ์๊ฐ์ ๋ค๋ฅด๊ธฐ์ ๊ทธ๋ ๋ค.
data class๋ equals, hashcode ๋ฉค๋ฒ๋ง deriveํ ๊ฒ์ด ์๋๋ผ ๋ค๋ฅธ ์์ฃผ ์ฐ๋ toString(), componentN(), copy()๋ deriveํด์ค๋ค.
์ฝํ๋ฆฐ ๊ณต์๋ฌธ์ : https://kotlinlang.org/docs/data-classes.html