Showing posts from March, 2016

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:
classGenericIntextendsGeneric<T> {} // one wants to know the type of T of its parentnewGenericInt()
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 classnewGenericClass<Integer>()
The third use case is when you invoke …