Is there a case where a companion object (singleton) for a class is needed? Why would I want to create a class, say Foo
and also create a companion object for it?
The companion object basically provides a place where one can put "static-like" methods. Furthermore, a companion object, or companion module, has full access to the class members, including private ones.
Companion objects are great for encapsulating things like factory methods. Instead of having to have, for example, Foo
and FooFactory
everywhere, you can have a class with a companion object take on the factory responsibilities.