2011-03-23 16 views
6

Hay una clase de tipo genérico:¿Cómo obtener el tipo real de un tipo genérico?

class Action[T] 

crear algunos ejemplos de ello, se puso en una lista:

val list = List(new Action[String], new Action[Int]) 

Iterar, y cómo obtener el tipo real de los casos?

list foreach { action => 
    // how do I know the action is for a String or an Int? 
} 
+1

Qué idioma estamos hablando? – Doodloo

+0

¿Se puede usar 'action.getClass()'? – Gabe

+0

'action.getClass' no puede decir el tipo real – Freewind

Respuesta

11

Scala borra parámetros de tipo genérico en la compilación, por lo que tendría que tener alguna evidencia adicional de que un objeto cualquiera que lo proporciona la reflexión tradicional. Ver:

How do I get around type erasure on Scala? Or, why can't I get the type parameter of my collections?

Esta pregunta parece dar a entender que podría haber un poco de magia para aplicar en algunas circunstancias:

Accounting for type parameters in a Scala generic class 'equals' method... are manifests the only way?

Cuestiones relacionadas