A case class Foo()
превращается во что-то, эквивалентное
class Foo() extends Product with Serializable {
// some methods
}
object Foo extends (() => Foo) with Serializable {
// some methods
}
Итак, Foo()
создает экземпляр класса Foo, а Foo
является ссылкой на объект-компаньон Foo.
Однако, если ваш класс case Foo
не имеет параметров, вам следует рассмотреть возможность сделать его case * . Если вы не злоупотребляете своим классом case с внутренним изменяемым состоянием [1], все Foo()
экземпляры должны быть в любом случае неразличимы.
[1] Если это так, рассмотрите возможность использования обычного класса.