Reflecting on reflection in Scala and Java
Reflection has always been a bit of a trickery, and while there may be some true to it, it does not mean one cannot master mind some cool stuff using it, and by cool I mean useful,  re-usable, elegant and the likes. In this post we put on the wizard hat and pull out some rabbits.    Problem Statement   In this post we'll discuss 3 use-cases in which we want to retrieve runtime information for some generic parameters. In all three of the following use-cases, our goal is to retrieve the runtime information for the generic type parameter T.   The first use case is when you have a class deriving from a generic class, without having generic parameters of its own:  class  GenericInt  extends  Generic<T>  {} // one wants to know the type of T of its parent  new  GenericInt ()   The second use case is when you create a new instance of a generic class by providing a generic parameter:  // one wants to know the type of T inside the class  new  GenericClass<Integer> ()   The third...