2012-05-31 21 views

Respuesta

18

Tenga en cuenta que Map es un trait, no un class.

Todavía se puede crear un alias que utiliza la palabra clave type:

type StringMap[A] = Map[String, A] 

val myMap: StringMap[Int] = Map("a" -> 1) 

Esto se puede hacer en el marco de una definición class, object o trait (y en el ámbito de aplicación de cualquier método o expresión).

A veces querrás que el alias sea privado a su alcance de declaración, simplemente como una conveniencia para tu código de implementación. Si desea que el tipo sea utilizable en general, vienen en Package Objects útil:

package object mypackage { 
    type StringMap[A] = Map[String, A] 
} 

Debido Map es un rasgo (y objeto acompañante asociado) y no una clase, no será capaz de utilizarlo directamente para crear instancias:

val myMap = new StringMap[Int] 
// error: trait Map is abstract; cannot be instantiated 

Si un alias una clase, sin embargo, todavía se puede utilizar la palabra clave new:

type StringHashMap[A] = HashMap[String, A] 
val myMap = new StringHashMap[Int] 
+0

Gracias, mapa era un mal ejemplo, que quería decir (caso) de clase – iwalktheline

Cuestiones relacionadas