• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

Calculator 클래스에서 참조값이 다르다고 에러가 발생합니다.

23.03.28 23:10 작성 조회수 301

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가 가능할 겁니다!

 

또 언제든 편하게 질문 남겨주세요~~~! 감사합니다!! 🙏🙏

조재연님의 프로필

조재연

질문자

2023.03.28

아 다시 보니 말씀하셨던 내용을 제가 놓쳤네요!

감사합니다 ㅜㅜ

괜찮습니다! 저도 잘 놓칩니다 ㅎㅎㅎ 감사합니다!!! 🙏🙏