인프런 커뮤니티 질문&답변

조재연님의 프로필 이미지
조재연

작성한 질문수

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

4강. 사칙연산 계산기에 대해 테스트 코드 작성하기

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

해결된 질문

작성

·

346

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

 

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

조재연님의 프로필 이미지
조재연
질문자

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

감사합니다 ㅜㅜ

최태현님의 프로필 이미지
최태현
지식공유자

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

조재연님의 프로필 이미지
조재연

작성한 질문수

질문하기