There's one use, that Guava might use. As you know, types are lost after compilation, but if the type is spefied at the class level, then it's not lost after compilation and it can be extracted by reflection. I'll put the code to extract the type in a minute.
Edit
I don't know if the code is of any use, but here it's
public class Reflect {
public static void main(String[] args) {
Super<String> aStringSuper = new Super<String>() {};
aStringSuper.method();
Super<List<Integer>> aListSuper = new Super<List<Integer>>() {};
aListSuper.method();
}
}
class Super<T> {
public void method() {
Type genericSuperclass = this.getClass().getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
for(Type type : parameterizedType.getActualTypeArguments()) {
System.out.println(type);
}
}
}