Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the actual type of a generic type?

Tags:

generics

scala

There is a class with generic type:

class Action[T]

Create some instances of it, put in a list:

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

Iterate it, and how to get the actual type of the instances?

list foreach { action =>
     // how do I know the action is for a String or an Int?
}
like image 433
Freewind Avatar asked Feb 02 '23 20:02

Freewind


1 Answers

Scala erases generic type parameters at compilation, so you would need to have some additional evidence in you object other than what traditional reflection provides. See:

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

This questions seems to imply there might be some magic to apply in some circumstances:

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

like image 139
Antoine Latter Avatar answered Feb 11 '23 06:02

Antoine Latter