Programming Sala (2nd)책에서 case 클래스를 사용하면 아래와 같은 이점이 있다고 설명합니다.
While there is no class body for Point, another feature of the case keyword is the
compiler automatically generates several methods for us, including the familiar to
String, equals, and hashCode methods in Java. The output shown for each point, e.g.,
Point(2.0,0.0), is the toString output. The equals and hashCode methods are difficult
for most developers to implement correctly, so autogeneration is a real benefit.
When we asked if p00 == p20 and p20 == p20b, Scala invoked the generated equals
method. This is in contrast with Java, where == just compares references. You have to
call equals explicitly to do a logical comparison.
A final feature of case classes we’ll mention now is that the compiler also generates a
companion object, a singleton of the same name, for each case class (in this case, object
Point).
DiceBot 클래스가 이런 이점을 무시할 필요가 없다고 생각합니다. companion object 을 자동으로 만들어 주면, 아래와 같이 new 연산자 없이 사용할 수 있습니다.
// 기존
new DiceBot(new Random)
// case class 적용
DiceBot(new Random)
Programming Sala (2nd)책에서 case 클래스를 사용하면 아래와 같은 이점이 있다고 설명합니다.
DiceBot 클래스가 이런 이점을 무시할 필요가 없다고 생각합니다.
companion object
을 자동으로 만들어 주면, 아래와 같이 new 연산자 없이 사용할 수 있습니다.