해결된 질문
작성
·
357
3
안녕하세요. 강의 잘 듣고 있습니다!
7:28 분쯤에 테스트코드를 실행하는데
Exception in thread "main" java.lang.IllegalStateException
at com.group.libraryapp.calculator.CalculatorTest.addTest(CalculatorTest.kt:16)
at com.group.libraryapp.calculator.CalculatorTestKt.main(CalculatorTest.kt:5)
at com.group.libraryapp.calculator.CalculatorTestKt.main(CalculatorTest.kt)
Process finished with exit code 1
라는 에러가 발생하는데 확인해보니 equals 메서드가 오버라이드되어 있지 않아서 발생하는 에러라고 확인을 했습니다.
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is Calculator) return false
return number == other.number
}
그래서 해당 코드를 추가해주었는데요.
강의에서는 equals 오버라이드 하지 않아도 에러가 발생 안하는데 저는 발생하는 이유를 잘 몰라서 질문글에 문의를 남겨봅니다!
감사합니다.
답변 1
1
안녕하세요 재연님! 질문 감사드립니다!! 😊
제 생각에는 아마 data class
차이가 아닐까 싶어요~!!!
코틀린에서는 data class
를 이용하면 Java의 Object에 있는 (Kotlin의 Any에 있는) equals()
hashCode()
toString()
을 자동으로 만들어줍니다!!
Calculator
를 data class로 만드시면, 직접 equals()
를 override 하지 않으시고 Calculator 끼리의 equals가 가능할 겁니다!
또 언제든 편하게 질문 남겨주세요~~~! 감사합니다!! 🙏🙏
아 다시 보니 말씀하셨던 내용을 제가 놓쳤네요!
감사합니다 ㅜㅜ