In general, the scala collection classes define factory methods in their companion object using the apply method. List("this","is","a","list") and Map("foo" -> 45, "bar" ->76) are syntactic sugar for calling these applicable methods. Using this convention is pretty idiomatic scala.
In addition, if you define a case class C(i: Int) , it also defines a factory C.apply(i: Int) method, which can be called C(i) . So nothing new is needed.
In addition, new is required to create objects.
source share