What you describe is called covariance, and it is a property of most collection classes in Scala - a subtype set is a subtype of a supertype collection. However, since it Arrayis a primitive array of Java, it is not covariant - the set of subtypes is simply different. (The situation is more complicated in 2.7, where it is an almost primitive Java array, in 2.8 Array is just a simple primitive Java array, since 2.7 complications were unsuccessful.)
If you try to do the same with ArrayBuffer(from collection.mutable<- edit: this part is incorrect, see comments) or List(<- edit: this is true) or Set(<- edit: no, is Setalso invariant), you will get the desired behavior. You can also create Array[Actor]for starters, but always load its values Producer.
- Array[Producer], .asInstanceOf[Array[Actor]]. - , - , , , .